Partilhar via


TABELA ALTER column_definition (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Especifica as propriedades de uma coluna que são adicionadas a uma tabela usando ALTER TABLE.

Transact-SQL convenções de sintaxe

Syntax

column_name <data_type>  
[ FILESTREAM ]  
[ COLLATE collation_name ]   
[ NULL | NOT NULL ]  
[   
    [ CONSTRAINT constraint_name ] DEFAULT constant_expression [ WITH VALUES ]   
    | IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ]   
]  
[ ROWGUIDCOL ]   
[ SPARSE ]   
[ ENCRYPTED WITH  
  ( COLUMN_ENCRYPTION_KEY = key_name ,  
      ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,   
      ALGORITHM =  'AEAD_AES_256_CBC_HMAC_SHA_256'   
  ) ]  
[ MASKED WITH ( FUNCTION = ' mask_function ') ]  
[ <column_constraint> [ ...n ] ]  

<data type> ::=   
[ type_schema_name . ] type_name   
    [ ( precision [ , scale ] | max |   
        [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]   

<column_constraint> ::=   
[ CONSTRAINT constraint_name ]   
{     { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        [   
            WITH FILLFACTOR = fillfactor    
          | WITH ( < index_option > [ , ...n ] )   
        ]   
        [ ON { partition_scheme_name ( partition_column_name )   
            | filegroup | "default" } ]  
  | [ FOREIGN KEY ]   
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
  | CHECK [ NOT FOR REPLICATION ] ( logical_expression )   
}  

Arguments

column_name

O nome da coluna a ser alterada, adicionada ou descartada. column_name pode consistir de 1 a 128 caracteres. Para novas colunas, criadas com um tipo de dados de carimbo de data/hora , column_name podem ser omitidas. Se nenhuma column_name for especificada para uma coluna de tipo de dados de carimbo de data/hora , o nome carimbo de data/hora será usado.

[ type_schema_name. ] type_name

O tipo de dados para a coluna que é 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 baseado em um tipo de dados de sistema do SQL Server. Os tipos de dados de alias devem ser criados usando CREATE TYPE antes de poderem ser usados em uma definição de tabela.

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

Se type_schema_name não for especificado, as referências do Mecanismo de Banco de Dados da Microsoft type_name na seguinte ordem:

  • O tipo de dados do 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 para o tipo de dados especificado. Para obter mais informações sobre valores de precisão válidos, consulte Precision, Scale and Length.

scale
A escala para o tipo de dados especificado. Para obter mais informações sobre valores de escala válidos, consulte de precisão, escala e comprimento .

max
Aplica-se apenas aos tipos de dados varchar, nvarchar e varbinary . Esses (max) tipos de dados são usados para armazenar 2^31 bytes de caracteres e dados binários e 2^30 bytes de dados Unicode.

CONTENT
Especifica que cada instância do tipo de dados xml no column_name pode incluir vários elementos de nível superior. CONTENT Aplica-se somente ao tipo de dados XML e pode ser especificado somente se xml_schema_collection também for especificado. Se isso não for especificado, CONTENT é 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 Aplica-se somente ao tipo de dados XML e pode ser especificado somente se xml_schema_collection também for especificado.

xml_schema_collection
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Aplica-se somente ao tipo de dados xml para associar uma coleção de esquema XML ao tipo. Antes que uma coluna de tipo de dados xml seja adicionada a um esquema, o esquema deve primeiro ser criado no banco de dados usando CREATE XML SCHEMA COLLECTION.

FILESTREAM

Opcionalmente, especifica o atributo de armazenamento FILESTREAM para coluna que tem um type_name de varbinary(max).

Quando FILESTREAM é especificado para uma coluna, a tabela também deve ter uma coluna do tipo de dados uniqueidentifier que tenha o atributo ROWGUIDCOL. Esta coluna não deve permitir valores nulos e deve ter uma restrição de coluna única UNIQUE ou PRIMARY KEY. O GUID valor da coluna é fornecido pelo aplicativo quando os dados estão sendo inseridos ou por uma restrição DEFAULT.

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ó pode ser descartada depois que a última coluna FILESTREAM for descartada.

Quando o atributo de armazenamento FILESTREAM é especificado para uma coluna, todos os valores para essa 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 FILESTREAM.

COLLATE collation_name

Especifica o agrupamento da coluna. Se não for especificado, será atribuído à coluna o agrupamento padrão do banco de dados. O nome do agrupamento pode ser um nome de agrupamento do Windows ou um nome de agrupamento SQL. Para obter uma lista e mais informações, consulte de Nome de Agrupamento do Windows e Nome de Agrupamento do SQL Server.

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

Para obter mais informações sobre a COLLATE cláusula, consulte COLLATE.

NULO | NÃO NULO

Determina se NULL os valores são permitidos na coluna. NULL não é estritamente uma restrição, mas pode ser especificado como NOT NULL.

[ RESTRIÇÃO constraint_name ]

Especifica o início de uma DEFAULT definição de valor. Para manter a compatibilidade com versões anteriores do SQL Server, um nome de restrição pode ser atribuído a um DEFAULTarquivo . constraint_name deve seguir as regras para identificadores, exceto que o nome não pode começar com um sinal numérico (#). Se constraint_name não for especificado, um nome gerado pelo sistema será atribuído à DEFAULT definição.

DEFAULT

É uma palavra-chave que especifica o valor padrão para a coluna. DEFAULT As definições podem ser usadas para fornecer valores para uma nova coluna nas linhas de dados existentes. DEFAULT As definições não podem ser aplicadas a colunas de carimbo de data/hora ou colunas com uma IDENTITY propriedade. Se um valor padrão for especificado para uma coluna de tipo definido pelo usuário, o tipo deverá suportar 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 do sistema usada como o valor de coluna padrão. Se usado com uma coluna definida como sendo de um tipo definido pelo usuário do .NET Framework, a implementação do tipo deve suportar uma conversão implícita do constant_expression para o tipo definido pelo usuário.

COM VALORES

Ao adicionar uma coluna e uma DEFAULT restrição, se a coluna permitir NULLS, WITH VALUES define o valor da nova coluna para o valor dado em DEFAULT constant_expression para linhas existentes.

Se a coluna que está sendo adicionada não permitir NULLS, para linhas existentes, o valor da coluna sempre será definido como o valor fornecido em DEFAULT constant expression.

A partir do SQL Server 2012 (11.x), essa pode ser uma operação de metadados adding-not-null-columns-as-an-online-operation.

Se isso for usado quando a coluna relacionada não estiver sendo adicionada, não terá efeito.

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

IDENTITY

Especifica que a nova coluna é uma coluna de identidade. O Mecanismo de Banco de Dados do SQL Server fornece um valor incremental exclusivo 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 seed e increment. A ordem em que as linhas são atualizadas não é garantida. Os números de identidade também são gerados para quaisquer novas linhas adicionadas.

As colunas de identidade são comumente usadas com PRIMARY KEY restrições para servir como identificador de linha exclusivo para a tabela. A IDENTITY propriedade pode ser atribuída a uma coluna tinyint, smallint, int, bigint, decimal(p,0) ou numérica(p,0). Apenas uma coluna de identidade pode ser criada por tabela. A palavra-chave e os DEFAULT padrões vinculados não podem ser usados com uma coluna de identidade. Ou tanto a semente como o incremento devem ser especificados, ou nenhum dos dois. Se nenhum dos dois for especificado, o padrão será (1,1).

Note

Não é possível modificar uma coluna de tabela existente para adicionar a IDENTITY propriedade.

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 é replicada para o Assinante. Os valores na coluna de identidade no Publisher dependem da ordem em que as linhas da tabela afetada são fisicamente armazenadas. As linhas podem ser armazenadas de forma diferente no Assinante; portanto, o valor da coluna de identidade pode ser diferente para as mesmas linhas.

Para desativar a IDENTITY propriedade de uma coluna permitindo que os valores sejam inseridos explicitamente, use SET IDENTITY_INSERT.

sementes O valor usado para a primeira linha carregada na tabela.

incremento O valor incremental adicionado ao valor de identidade da linha anterior que é carregada.

NÃO SE DESTINA À REPLICAÇÃO

Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Pode ser especificado para a IDENTITY propriedade. Se essa cláusula for especificada para a propriedade, os valores não serão incrementados nas colunas de identidade quando os IDENTITY agentes de replicação executarem operações de inserção.

ROWGUIDCOL

Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

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

ROWGUIDCOL não impõe a exclusividade dos valores armazenados na coluna. Além disso, ROWGUIDCOL não gera automaticamente valores para novas linhas que são inseridas na tabela. Para gerar valores exclusivos para cada coluna, use a NEWID() função em INSERT instruções ou especifique a NEWID() função como padrão para a coluna. Para obter mais informações, consulte NEWID (Transact-SQL) e INSERT (Transact-SQL).

SPARSE

Indica que a coluna é uma coluna esparsa. O armazenamento de colunas esparsas é otimizado para valores nulos. Colunas esparsas não podem ser designadas como NÃO NULA. Para obter restrições adicionais e mais informações sobre colunas esparsas, consulte Usar colunas esparsas.

<column_constraint>
Para obter as definições dos argumentos de restrição de coluna, consulte column_constraint (Transact-SQL).

ENCRIPTADO COM

Especifica colunas de criptografia usando o recurso Always Encrypted. ENCRYPTED WITH não é suportado em base de dados SQL no Microsoft Fabric.

COLUMN_ENCRYPTION_KEY = key_name

Especifica a chave de criptografia da coluna. Para obter mais informações, consulte CREATE COLUMN ENCRYPTION KEY (Transact-SQL).

ENCRYPTION_TYPE = { DETERMINÍSTICA | ALEATORIZADO }

A encriptação determinística utiliza um método que gera sempre o mesmo valor encriptado para qualquer valor de texto simples. O uso da criptografia determinística permite pesquisar usando comparação de igualdade, agrupamento e junção de tabelas usando junções de igualdade com base em valores criptografados, mas também pode permitir que usuários não autorizados adivinhem informações sobre valores criptografados examinando padrões na coluna criptografada. A junção de duas tabelas em colunas criptografadas deterministicamente só é possível se ambas as colunas forem criptografadas usando a mesma chave de criptografia de coluna. A criptografia determinística deve usar um agrupamento de colunas com uma ordem de classificação binary2 para colunas de caracteres.

A criptografia aleatória usa um método que encripta os dados de uma maneira menos previsível. A criptografia aleatória é mais segura, mas impede quaisquer cálculos e indexação em colunas criptografadas, a menos que sua instância do SQL Server ofereça suporte a Always Encrypted com enclaves seguros.

Se você estiver usando Always Encrypted (sem enclaves seguros), use criptografia determinística para colunas a serem pesquisadas com parâmetros ou parâmetros de agrupamento, por exemplo, um número de ID do governo. Use criptografia aleatória para dados como um número de cartão de crédito que não é agrupado com outros registros ou usado para unir tabelas e que não é pesquisado porque você usa outras colunas (como um número de transação) para encontrar a linha que contém a coluna criptografada de interesse.

Se você estiver usando Always Encrypted com enclaves seguros, a criptografia aleatória é um tipo de criptografia recomendado.

As colunas devem ser de um tipo de dados qualificado.

ALGORITHM

Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de dados SQL.

Deve ser 'AEAD_AES_256_CBC_HMAC_SHA_256'.

Para obter mais informações, incluindo restrições de recursos, consulte Sempre criptografado (Mecanismo de Banco de Dados).

ADICIONAR MASCARADO COM (FUNCTION = ' mask_function ')

Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de dados SQL.

Especifica uma máscara de dados dinâmica. mask_function é o nome da função de mascaramento com os parâmetros apropriados. As seguintes funções estão disponíveis:

  • default()
  • email()
  • partial()
  • random()

Para parâmetros de função, consulte Dynamic Data Masking.

Remarks

Se uma coluna for adicionada com um tipo de dados uniqueidentifier , ela poderá ser definida com um padrão que usa a NEWID() função para fornecer os valores de identificador exclusivo na nova coluna para cada linha existente na tabela. Para obter mais informações, consulte NEWID (Transact-SQL).

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

A ALTER TABLE instrução falhará se a adição da coluna fizer com que o tamanho da linha de dados exceda 8.060 bytes.

Examples

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