Може да изглежда странно, но T-SQL има IDENTITY() свойство и IDENTITY() функция, всяка от които служи за (подобно, но) различно предназначение.
IDENTITY()property създава колона за идентичност в таблица. Колоната за идентичност съдържа автоматично нарастващ идентификационен номер. Това свойство се използва сCREATE TABLEиALTER TABLEизявления.IDENTITY()функцията обаче се използва само вSELECTизявление сINTOклауза таблица за вмъкване на колона за идентичност в нова таблица.
Има и SQL-DMO Identity свойство, което разкрива свойството за идентичност на реда на колона, но няма да го разглеждам тук. Microsoft съветва, че това свойство ще бъде премахнато в бъдеща версия на SQL Server и че трябва да избягвате да го използвате в нова разработка.
Свойство IDENTITY()
Ето пример за използване на IDENTITY() собственост.
CREATE TABLE Pets (
PetId int IDENTITY(1,1) PRIMARY KEY,
PetName varchar(255)
);
Този код създава таблица с две колони. Първата колона (PetId ) е колона за идентичност (защото използвам IDENTITY() свойство в неговата дефиниция).
Сега, след като създадох колона за идентичност, мога да вмъкна имена на домашни любимци в PetName колона, без да е необходимо да включвате идентификатор за всеки ред.
INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');
SELECT * FROM Pet;
Резултат:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
В този случай номерирането започва от 1 и всеки ред се увеличава с 1. Това е така, защото използвах IDENTITY(1,1) за да укажете, че началната стойност е 1 и че се увеличава с 1 на всеки нов ред.
Функция IDENTITY()
Както споменахме, IDENTITY() функцията се използва в SELECT INTO изявление. Ето пример за използване на IDENTITY() функция.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Резултат:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Тук създадох таблица, наречена BestFriends и го попълва от Pets маса.
В този случай започнах броенето на 101 и го увеличих с 10. Също така имайте предвид, че функцията изисква първия аргумент, за да посочи типа данни на колоната.