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 TABLEaALTER TABLEprohlášení.IDENTITY()funkce se však používá pouze vSELECTpříkaz sINTOklauzule 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.