Може да изглежда странно, но 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. Също така имайте предвид, че функцията изисква първия аргумент, за да посочи типа данни на колоната.