Může se to zdát divné, ale T-SQL má IDENTITY()
vlastnost a IDENTITY()
funkce, z nichž každá slouží (podobnému, ale) jinému účelu.
IDENTITY()
vlastnost vytvoří sloupec identity v tabulce. Sloupec identity obsahuje automaticky se zvyšující identifikační číslo. Tato vlastnost se používá sCREATE TABLE
aALTER TABLE
prohlášení.IDENTITY()
funkce se však používá pouze vSELECT
příkaz sINTO
klauzule tabulky pro vložení sloupce identity do nové tabulky.
K dispozici je také SQL-DMO Identity
vlastnost, která odhaluje vlastnost identity řádku sloupce, ale tím se zde nebudu zabývat. Společnost Microsoft radí, že tato vlastnost bude v budoucí verzi SQL Serveru odstraněna a neměli byste ji používat v nových vývojových pracích.
Vlastnost IDENTITY()
Zde je příklad použití IDENTITY()
vlastnost.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Tento kód vytvoří tabulku se dvěma sloupci. První sloupec (PetId
) je sloupec identity (protože používám IDENTITY()
vlastnost v její definici).
Nyní, když jsem vytvořil sloupec identity, mohu do PetName
vkládat jména domácích mazlíčků sloupec bez nutnosti uvádět ID pro každý řádek.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Výsledek:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
V tomto případě číslování začíná na 1 a každý řádek se zvyšuje o 1. Je to proto, že jsem použil IDENTITY(1,1)
určit, že počáteční hodnota je 1 a že se zvýší o 1 na každém novém řádku.
Funkce IDENTITY()
Jak již bylo zmíněno, IDENTITY()
funkce se používá v SELECT INTO
prohlášení. Zde je příklad použití IDENTITY()
funkce.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Výsledek:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Zde jsem vytvořil tabulku s názvem BestFriends
a naplnil jej z Pets
stůl.
V tomto případě jsem začal počítat na 101 a zvýšil jsem ho o 10. Všimněte si také, že funkce vyžaduje první argument k určení datového typu sloupce.