IDENTITY (função) (Transact-SQL)
É usada somente em uma instrução SELECT com a cláusula INTO table para inserir uma coluna de identidade em uma nova tabela. Embora semelhante, a função IDENTITY não é a propriedade IDENTITY que é usada com CREATE TABLE e ALTER TABLE.
Sintaxe
IDENTITY (data_type [ , seed , increment ] ) AS column_name
Argumentos
data_type
É o tipo de dados da coluna de identidade. Os tipos de dados válidos para uma coluna de identidade são tipos de dados da categoria de tipo de dados inteiro, exceto para o tipo de dados bit ou decimal.seed
É o valor inteiro que será atribuído à primeira linha da tabela. A cada linha subsequente é atribuído o valor de identidade seguinte, que é igual ao ultimo valor IDENTITY mais o valor increment. Se nem seed nem increment for especificado, ambos assumirão 1 como padrão.increment
É o valor inteiro a ser adicionado ao valor seed para linhas sucessivas na tabela.column_name
É o nome da coluna que será inserida na nova tabela.
Tipos de retorno
Retorna o mesmo que data_type*.*
Comentários
Como essa função cria uma coluna em uma tabela, um nome para a coluna deve ser especificado na lista de seleção de uma destas maneiras:
--(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;
Exemplos
O exemplo a seguir insere todas as linhas da tabela Person do banco de dados AdventureWorks2008R2 em uma nova tabela chamada NewContact. A função IDENTITY é usada para iniciar números de identificação em 100, em vez de 1, na tabela NewContact.
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