Criando e modificando colunas de identificador

Você pode usar uma coluna de identificador para criar automaticamente um número de identificação de incrementação em uma tabela. É possível criar apenas uma coluna de identificador e uma coluna de GUID para cada tabela.

Propriedade IDENTITY

Você pode implementar colunas de identificador usando a propriedade IDENTITY. Ela permite que o desenvolvedor especifique o número de identidade da primeira linha inserida na tabela (propriedade Semente de Identidade) e um incremento (propriedade Incremento de Identidade) que será adicionado à semente para determinar sucessivamente números de identidade. Quando os valores são inseridos em uma tabela com coluna de identificador, o Mecanismo de Banco de Dados gerará automaticamente o próximo valor identificador adicionando o incremento à semente. Quando as colunas de identificador são adicionadas a tabelas existentes, os números de identidade são adicionados às linhas existentes da tabela, com os valores de semente e de incremento aplicados, na ordem em que essas linhas foram originalmente inseridas. Os números de identidade também são gerados para todas as linhas adicionadas. Não é possível modificar uma coluna de tabela existente para adicionar a propriedade IDENTITY.

Ao usar a propriedade IDENTITY para definir uma coluna de identificador, considere o seguinte:

  • Uma tabela pode ter apenas uma coluna definida com a propriedade IDENTITY e essa coluna deve ser definida usando um tipo de dados decimal, int, numeric, smallint, bigint ou tinyint.

  • A semente e o incremento podem ser especificados. O valor padrão de ambos é 1.

  • A coluna de identificador não deve permitir valores nulos nem conter uma definição ou objeto DEFAULT.

  • A coluna pode ser referenciada em uma lista de seleção por meio da palavra-chave $IDENTITY depois de definida a propriedade IDENTITY. A coluna também pode ser referenciada pelo nome.

  • A função OBJECTPROPERTY pode ser usada para determinar se a tabela possui uma coluna IDENTITY, enquanto a função COLUMNPROPERTY serve para determinar o nome da coluna IDENTITY.

  • SET IDENTITY_INSERT pode ser usada para desabilitar a propriedade IDENTITY de uma coluna ao habilitar os valores que serão inseridos explicitamente.

    ObservaçãoObservação

    Se houver uma coluna de identificador em uma tabela com exclusões freqüentes, intervalos poderão ocorrer entre valores de identidade. Valores de identidade excluídos não são reutilizados. Para evitar essas lacunas, não use a propriedade IDENTITY. Em seu lugar, você pode criar um gatilho que determina um novo valor de identificador, com base nos valores existentes na coluna de identificador, à medida que as linhas são inseridas.

Identificadores globais exclusivos

Embora a propriedade IDENTITY automatize a numeração de linhas em uma tabela, tabelas separadas, cada qual com sua própria coluna de identificador, podem produzir os mesmos valores. Isso porque é garantida a exclusividade da propriedade IDENTITY para a tabela na qual ela é usada. Se um aplicativo precisar gerar uma coluna de identificador que seja exclusiva no banco de dados, ou em cada banco de dados de cada computador em rede do mundo, use o tipo de dados uniqueidentifier e a função NEWID ou NEWSEQUENTIALID(). Além disso, você pode aplicar a propriedade ROWGUIDCOL para indicar que a coluna nova é uma coluna GUID da linha. Ao contrário das colunas definidas com a propriedade IDENTITY, o Mecanismo de Banco de Dados não gera valores automaticamente para a coluna do tipo uniqueidentifier. Para inserir um valor global exclusivo, crie uma definição DEFAULT na coluna que usa a função NEWID ou NEWSEQUENTIALID para gerar um valor global exclusivo. Para obter mais informações, consulte Usando dados uniqueidentifier.

Uma coluna com a propriedade ROWGUICOL pode ser referenciada em uma lista de seleção por meio da palavra-chave $ROWGUID. Esse processo é similar ao modo como uma coluna IDENTITY pode ser referenciada pela palavra-chave $IDENTITY. Uma tabela pode ter apenas uma coluna ROWGUIDCOL e essa coluna deve ser definida usando um tipo de dados uniqueidentifier. A função OBJECTPROPERTY (Transact-SQL) pode ser usada para determinar se a tabela possui uma coluna ROWGUIDCOL, enquanto a função COLUMNPROPERTY (Transact-SQL) serve para determinar o nome da coluna ROWGUIDCOL.

O exemplo a seguir cria uma tabela com uma coluna uniqueidentifier como chave primária. O exemplo usa a função NEWSEQUENTIALID() na restrição DEFAULT para fornecer os valores das linhas novas. A propriedade ROWGUIDCOL é aplicada à coluna uniqueidentifier de forma que ela possa ser referenciada pela palavra-chave $ROWGUID.

CREATE TABLE dbo.Globally_Unique_Data
    (guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
    Employee_Name varchar(60)
    CONSTRAINT Guid_PK PRIMARY KEY (guid) );

Criar uma nova coluna de identificador ao criar uma tabela

CREATE TABLE (Transact-SQL)

Criar uma nova coluna de identificador em uma tabela existente

ALTER TABLE (Transact-SQL)

Excluir uma coluna de identificador

ALTER TABLE (Transact-SQL)

Como excluir colunas de uma tabela (Visual Database Tools)

Obter informações sobre colunas de identidade

sys.identity_columns (Transact-SQL)

IDENT_INCR (Transact-SQL)

IDENT_SEED (Transact-SQL)

Verificar e corrigir o valor de identidade atual para uma tabela especificada

DBCC CHECKIDENT (Transact-SQL)

Definir um valor de semente novo

DBCC CHECKIDENT (Transact-SQL)