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 TABLEogALTER TABLEudsagn.IDENTITY()funktion bruges dog kun i enSELECTsætning med enINTOtabelsæ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.