Det kan verka konstigt, men T-SQL har en IDENTITY()
egenskap och en IDENTITY()
funktion, som var och en tjänar ett (liknande men) olika syfte.
-
IDENTITY()
egenskap skapar en identitetskolumn i en tabell. En identitetskolumn innehåller ett automatiskt ökande identifikationsnummer. Den här egenskapen används medCREATE TABLE
ochALTER TABLE
uttalanden. -
IDENTITY()
Funktionen används dock endast i enSELECT
uttalande med enINTO
tabellsats för att infoga en identitetskolumn i en ny tabell.
Det finns också SQL-DMO Identity
egenskap som exponerar radidentitetsegenskapen för en kolumn, men jag kommer inte att täcka det här. Microsoft rekommenderar att den här egenskapen kommer att tas bort i en framtida version av SQL Server och att du bör undvika att använda den i nytt utvecklingsarbete.
IDENTITY() Egenskap
Här är ett exempel på hur du använder IDENTITY()
egendom.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Denna kod skapar en tabell med två kolumner. Den första kolumnen (PetId
) är en identitetskolumn (eftersom jag använder IDENTITY()
egendom i dess definition).
Nu när jag har skapat en identitetskolumn kan jag infoga husdjursnamn i PetName
kolumn utan att behöva inkludera ett ID för varje rad.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Resultat:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
I det här fallet börjar numreringen på 1 och varje rad ökar med 1. Detta beror på att jag använde IDENTITY(1,1)
för att ange att startvärdet är 1 och att det ökas med 1 på varje ny rad.
IDENTITY() Funktion
Som nämnts, IDENTITY()
funktionen används i en SELECT INTO
påstående. Här är ett exempel på hur du använder IDENTITY()
funktion.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Resultat:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Här skapade jag en tabell som heter BestFriends
och fyllde den från Pets
tabell.
I det här fallet startade jag räkningen på 101 och ökade den med 10. Observera också att funktionen kräver det första argumentet för att ange datatypen för kolumnen.