Det kan virke mærkeligt, men T-SQL har en IDENTITY()
egenskab og en IDENTITY()
funktion, som hver tjener et (lignende, men) forskelligt formål.
IDENTITY()
egenskab opretter en identitetskolonne i en tabel. En identitetskolonne indeholder et automatisk stigende identifikationsnummer. Denne egenskab bruges sammen medCREATE TABLE
ogALTER TABLE
udsagn.IDENTITY()
funktion bruges dog kun i enSELECT
sætning med enINTO
tabelsætning for at indsætte en identitetskolonne i en ny tabel.
Der er også SQL-DMO Identity
egenskab, der afslører rækkeidentitetsegenskaben for en kolonne, men det vil jeg ikke dække her. Microsoft anbefaler, at denne egenskab vil blive fjernet i en fremtidig version af SQL Server, og at du bør undgå at bruge den i nyt udviklingsarbejde.
IDENTITY()-egenskab
Her er et eksempel på brug af IDENTITY()
ejendom.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Denne kode opretter en tabel med to kolonner. Den første kolonne (PetId
) er en identitetskolonne (fordi jeg bruger IDENTITY()
ejendom i sin definition).
Nu hvor jeg har oprettet en identitetskolonne, kan jeg indsætte kæledyrsnavne i PetName
kolonne uden at skulle inkludere et ID for hver række.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Resultat:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
I dette tilfælde starter nummereringen ved 1, og hver række øges med 1. Dette skyldes, at jeg brugte IDENTITY(1,1)
for at angive, at startværdien er 1, og at den øges med 1 på hver ny række.
IDENTITY() Funktion
Som nævnt er IDENTITY()
funktionen bruges i en SELECT INTO
udmelding. Her er et eksempel på brug af 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 | +----------+------------+
Her oprettede jeg en tabel kaldet BestFriends
og udfyldte den fra Pets
bord.
I dette tilfælde startede jeg optællingen ved 101 og øgede den med 10. Bemærk også, at funktionen kræver det første argument for at angive datatypen for kolonnen.