Compartilhar via


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 similar, a função IDENTITY não é a propriedade IDENTITY que é usada com CREATE TABLE e ALTER TABLE.

ObservaçãoObservação

Para criar um número incrementado automaticamente, que possa ser usado em várias tabelas ou ser chamado a partir de aplicativos, sem fazer referência a nenhuma tabela, consulte Números de sequência.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

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;
--(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 Contact do banco de dados AdventureWorks 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 AdventureWorks2012;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2012 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 AdventureWorks2012 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO
USE AdventureWorks2012;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2012 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 AdventureWorks2012 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO

Consulte também

Referência

CREATE TABLE (Transact-SQL)

@@IDENTITY (Transact-SQL)

IDENTITY (propriedade) (Transact-SQL)

SELECT @local\_variable (Transact-SQL)

DBCC CHECKIDENT (Transact-SQL)

sys.identity_columns (Transact-SQL)