column_definition (Transact-SQL)

Especifica as propriedades de uma coluna adicionada a uma tabela usando ALTER TABLE.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

column_name [ type_schema_name. ] type_name
    [ 
                ( { precision [ , scale ] | max | 
            [ { CONTENT | DOCUMENT } ] xml_schema_collection } ) 
    ] 
    [ FILESTREAM ]
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression 
             [ WITH VALUES ] 
        | IDENTITY [ (seed , increment ) ] [ NOT FOR REPLICATION ] 
    ] 
    [ ROWGUIDCOL ] 
    [ COLLATE < collation_name > ] 
    [ <column_constraint> [ ...n ] ] 

Argumentos

  • column_name
    É o nome da coluna a ser alterada, adicionada ou descartada. column_name pode consistir em 1 a 128 caracteres. Para colunas novas, pode ser omitido column_name para colunas criadas com um tipo de dados timestamp. Se nenhum column_name for especificado para uma coluna de tipo de dados timestamp, o nome timestamp será usado.

  • [ type_schema_name**.** ] type_name
    É o tipo de dados para a coluna adicionada e o esquema ao qual ela pertence.

    type_name pode ser:

    • Um tipo de dados de sistema Microsoft SQL Server.

    • Um tipo de dados de alias com base em um tipo de dados de sistema SQL Server. Os tipos de dados de alias precisam ser criados usando CREATE TYPE antes que eles possam ser usados em uma definição de tabela.

    • Um tipo definido pelo usuário Microsoft .NET Framework e o esquema ao qual ele pertence. Um tipo definido pelo usuário .NET Framework precisa ser criado usando CREATE TYPE antes que ele possa ser usado em uma definição de tabela.

    Se type_schema_name não for especificado, o Microsoft Mecanismo de Banco de Dados fará referência a type_name na seguinte ordem:

    • O tipo de dados de sistema SQL Server.

    • O esquema padrão do usuário atual no banco de dados atual.

    • O esquema dbo no banco de dados atual.

  • precision
    É a precisão do tipo de dados especificado. Para obter mais informações sobre valores de precisão válidos, consulte Precisão, escala e comprimento.

  • scale
    É a escala do tipo de dados especificado. Para obter mais informações sobre valores válidos de escala, consulte Precisão, escala e comprimento (Transact-SQL).

  • max
    Aplica-se apenas aos tipos de dados varchar, nvarchar e varbinary. São usados para armazenar 2^31 bytes de caractere e dados binários e 2^30 bytes de dados Unicode.

  • CONTENT
    Especifica que cada instância do tipo de dados xml em column_name pode incluir vários elementos de nível superior. CONTENT se aplica apenas ao tipo de dados xml, e pode ser especificado somente se xml_schema_collection também for especificado. Caso não seja especificado, CONTENT será o comportamento padrão.

  • DOCUMENT
    Especifica que cada instância do tipo de dados xml no column_name pode incluir apenas um elemento de nível superior. DOCUMENT se aplica apenas ao tipo de dados xml, e pode ser especificado somente se xml_schema_collection também for especificado.

  • xml_schema_collection
    Aplica-se apenas ao tipo de dados xml para associar uma coleção de esquema XML ao tipo. Antes de digitar uma coluna xml em um esquema, o esquema deve ser criado primeiramente no banco de dados, usando CREATE XML SCHEMA COLLECTION.

  • FILESTREAM
    Especifica opcionalmente o atributo de armazenamento FILESTREAM para a coluna que tiver um type_name de varbinary(max).

    Quando FILESTREAM é especificado para uma coluna, a tabela também precisa ter uma coluna do tipo de dados uniqueidentifier com o atributo ROWGUIDCOL. Essa coluna não deve permitir valores nulos e deve ter uma restrição de coluna única UNIQUE ou PRIMARY KEY. O valor GUID da coluna deve ser fornecido por um aplicativo durante a inserção de dados, ou por uma restrição DEFAULT que utilize a função NEWID ().

    A coluna ROWGUIDCOL não pode ser descartada e as restrições relacionadas não podem ser alteradas enquanto houver uma coluna FILESTREAM definida para a tabela. A coluna ROWGUIDCOL só seja descartada depois que a última coluna FILESTREAM for descartada.

    Quando o atributo de armazenamento FILESTREAM é especificado para uma coluna, todos os valores da coluna são armazenados em um contêiner de dados FILESTREAM no sistema de arquivos.

    Para obter um exemplo que mostra como usar a definição de coluna, consulte Guia de introdução ao armazenamento FILESTREAM.

  • [ CONSTRAINT constraint_name ]
    Especifica o início de uma definição DEFAULT. Para manter compatibilidade com versões anteriores do SQL Server, um nome de restrição pode ser atribuído a um DEFAULT. O constraint_name deve seguir as regras de identificadores, exceto quando o nome não puder iniciar com um sinal numérico (#). Se o constraint_name não for especificado, um nome gerado pelo sistema será atribuído à definição DEFAULT.

  • DEFAULT
    É uma palavra-chave que especifica o valor padrão para a coluna. Podem ser usadas definições DEFAULT para fornecer valores para uma coluna nova nas linhas existentes de dados. As definições DEFAULT não podem ser aplicadas a colunas timestamp nem a colunas com uma propriedade IDENTITY. Se um valor padrão for especificado para uma coluna do tipo definida pelo usuário, o tipo deverá oferecer suporte a uma conversão implícita de constant_expression para o tipo definido pelo usuário.

  • constant_expression
    É um valor literal, um NULL ou uma função de sistema usado como valor de coluna padrão. Se usado em conjunto com uma coluna definida para ser do tipo .NET Framework definido pelo usuário, a implementação do tipo deverá oferecer suporte a uma conversão implícita do constant_expression para o tipo definido pelo usuário.

  • WITH VALUES
    Especifica que o valor fornecido em constant_expression DEFAULT seja armazenado em uma nova coluna adicionada a linhas existentes. Se a coluna adicionada permitir valores nulos e WITH VALUES estiver especificado, o valor padrão será armazenado na coluna nova adicionada a linhas existentes. Se WITH VALUES não estiver especificado para colunas que permitem nulos, o valor NULL será armazenado na nova coluna nas linhas existentes. Se a nova coluna não permitir nulos, o valor padrão será armazenado em linhas novas, independentemente de WITH VALUES estar especificado.

  • IDENTITY
    Especifica que a coluna nova é uma coluna de identidade. O Mecanismo de banco de dados do SQL Server fornece um valor exclusivo e de incremento para a coluna. Quando você adiciona colunas de identificador a tabelas existentes, os números de identidade são adicionados às linhas existentes da tabela, com os valores de semente e de incremento. A ordem em que as linhas são atualizadas não é garantida. Os números de identidade também são gerados para todas as linhas adicionadas.

    As colunas de identidade, em geral, são usadas juntamente com restrições PRIMARY KEY para servir de identificador exclusivo de linha para a tabela. A propriedade IDENTITY pode ser atribuída a uma coluna tinyint, smallint, int, bigint, decimal(p,0) ou numeric(p,0). Apenas uma coluna de identidade pode ser criada por tabela. A palavra-chave DEFAULT e os padrões associados não podem ser usados com uma coluna de identidade. Ambos os valores de semente e de incremento devem ser identificados, ou nenhum dos dois. Se nenhum dos dois for especificado, o padrão será (1,1). Você não pode modificar uma coluna de tabela existente para adicionar a propriedade IDENTITY.

    ObservaçãoObservação

    Não há suporte para a adição de uma coluna de identidade a uma tabela publicada porque pode resultar em não-convergência quando a coluna for replicada ao Assinante. Os valores na coluna de identidade do Publicador dependem da ordem em que as linhas da tabela afetada são fisicamente armazenadas. As linhas poderiam ser armazenadas diferentemente no Assinante; por isso, o valor para a coluna de identidade pode ser diferente para as mesmas linhas.

    Para desabilitar a propriedade IDENTITY de uma coluna, permitindo a inserção explícita de valores, use SET IDENTITY_INSERT.

  • seed
    É o valor usado para a primeira linha carregada na tabela.

  • increment
    É o valor de incremento adicionado ao valor de identidade da linha anterior que é carregada.

  • NOT FOR REPLICATION
    Pode ser especificado para a propriedade IDENTITY. Se essa cláusula for especificada para a propriedade IDENTITY, os valores não serão incrementados em colunas de identidade quando os agentes de replicação executarem operações insert. Para obter mais informações, consulte Controlando restrições, identidades e gatilhos com NOT FOR REPLICATION.

  • ROWGUIDCOL
    Especifica se a coluna é uma linha de coluna de identificador global exclusivo. ROWGUIDCOL pode ser atribuído somente a uma coluna uniqueidentifier, e apenas uma coluna uniqueidentifier por tabela pode ser atribuída como coluna ROWGUIDCOL. ROWGUIDCOL não pode ser atribuído a colunas de tipos de dados definidos pelo usuário.

    ROWGUIDCOL não obriga exclusividade dos valores armazenados na coluna. Da mesma forma, ROWGUIDCOL não gera automaticamente valores para as novas linhas inseridas na tabela. Para gerar valores exclusivos para cada coluna, use a função NEWID em instruções INSERT, ou especifique a função NEWID como o padrão para a coluna. Para obter mais informações, consulte NEWID (Transact-SQL) e INSERT (Transact-SQL).

  • COLLATE < collation_name>
    Especifica o agrupamento da coluna. Se não for especificado, à coluna será atribuído o agrupamento padrão do banco de dados. O nome do agrupamento tanto pode ser um nome de agrupamento do Windows como um nome de agrupamento SQL. Para obter uma lista e mais informações, consulte Nome de agrupamento do Windows (Transact-SQL) e Nome de agrupamento do SQL Server (Transact-SQL).

    A cláusula COLLATE pode ser usada para especificar agrupamentos somente de colunas de tipos de dados char, varchar, nchar e nvarchar.

    Para obter mais informações sobre a cláusula COLLATE, consulte COLLATE (Transact-SQL).

Comentários

Se a coluna adicionada tiver mais de um tipo de dados uniqueidentifier, ela poderá ser definida com um padrão que use a função NEWID() para fornecer os valores de identificadores exclusivos na nova coluna para cada linha existente da tabela.

O Mecanismo de Banco de Dados não impõe uma ordem para especificar DEFAULT, IDENTITY, ROWGUIDCOL ou restrições de coluna em uma definição de coluna.

Exemplos

Para obter exemplos, consulte ALTER TABLE (Transact-SQL).