Het lijkt misschien vreemd, maar T-SQL heeft een IDENTITY()
eigenschap en een IDENTITY()
functie, die elk een (vergelijkbaar, maar) ander doel dienen.
- De
IDENTITY()
eigenschap maakt een identiteitskolom in een tabel. Een identiteitskolom bevat een automatisch oplopend identificatienummer. Deze eigenschap wordt gebruikt met deCREATE TABLE
enALTER TABLE
verklaringen. - De
IDENTITY()
functie wordt echter alleen gebruikt in eenSELECT
statement met eenINTO
table-clausule om een identiteitskolom in een nieuwe tabel in te voegen.
Er is ook de SQL-DMO Identity
eigenschap die de rij-identiteitseigenschap van een kolom blootlegt, maar dat zal ik hier niet behandelen. Microsoft adviseert dat deze eigenschap zal worden verwijderd in een toekomstige versie van SQL Server, en dat u deze eigenschap moet vermijden bij nieuw ontwikkelingswerk.
IDENTITY() Eigenschap
Hier is een voorbeeld van het gebruik van de IDENTITY()
eigendom.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Deze code maakt een tabel met twee kolommen. De eerste kolom (PetId
) is een identiteitskolom (omdat ik de IDENTITY()
. gebruik eigenschap in zijn definitie).
Nu ik een identiteitskolom heb gemaakt, kan ik huisdiernamen invoegen in de PetName
kolom zonder dat u voor elke rij een ID hoeft op te nemen.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Resultaat:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
In dit geval begint de nummering bij 1 en wordt elke rij verhoogd met 1. Dit komt omdat ik IDENTITY(1,1)
heb gebruikt om aan te geven dat de beginwaarde 1 is en dat deze op elke nieuwe rij met 1 wordt verhoogd.
IDENTITY() Functie
Zoals gezegd, de IDENTITY()
functie wordt gebruikt in een SELECT INTO
uitspraak. Hier is een voorbeeld van het gebruik van de IDENTITY()
functie.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Resultaat:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Hier heb ik een tabel gemaakt met de naam BestFriends
en vulde het vanuit de Pets
tafel.
In dit geval begon ik de telling bij 101 en verhoogde deze met 10. Merk ook op dat de functie het eerste argument nodig heeft om het gegevenstype van de kolom te specificeren.