Поделиться через


IDENTITY (функция) (Transact-SQL)

Используется только в инструкции SELECT с предложением INTO table для вставки столбца идентификаторов в новую таблицу. Хотя они похожи, функция IDENTITY не является свойством IDENTITY, которое используется с инструкциями CREATE TABLE и ALTER TABLE.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

IDENTITY (data_type [ , seed , increment ] ) AS column_name

Аргументы

  • data_type
    Тип данных столбца идентификаторов. Для столбца идентификаторов допустимы любые целочисленные типы данных, за исключением типов bit и decimal.

  • seed
    Целочисленное значение, присваиваемое первой строке таблицы. Каждой последующей строке назначается следующее значение идентификатора, равное последнему значению IDENTITY, увеличенному на значение increment. Если не указан ни аргумент seed, ни аргумент increment , то значения по умолчанию обоих равны 1.

  • increment
    Целочисленное значение, добавляемое к значению seed для каждой последующей строки таблицы.

  • column_name
    Имя столбца, который вставляется в новую таблицу.

Типы возвращаемых данных

Возвращает тот же тип, что и аргумент data_type*.*

Замечания

Так как данная функция создает столбец в таблице, имя столбца должно быть указано в списке выбора одним из следующих способов:

--(1)
SELECT IDENTITY(int, 1,1) AS ID_Num
INTO NewTable
FROM OldTable;

--(2)
SELECT ID_Num = IDENTITY(int, 1, 1)
INTO NewTable
FROM OldTable;

Примеры

В следующем примере все строки из таблицы Person базы данных База данных AdventureWorks2008R2 вставляются в новую таблицу с именем NewContact. Функция IDENTITY используется, чтобы начать в таблице NewContact отсчет идентификационных номеров с 100 вместо 1.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY BULK_LOGGED;
GO
SELECT  IDENTITY(smallint, 100, 1) AS ContactNum,
        FirstName AS First,
        LastName AS Last
INTO Person.NewContact
FROM Person.Person;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO