Partilhar via


TABELA ALTER computed_column_definition (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

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

Transact-SQL convenções de sintaxe

Syntax

column_name AS computed_column_expression  
[ PERSISTED [ NOT NULL ] ]  
[   
    [ 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 ref_table [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE } ]   
        [ ON UPDATE { NO ACTION } ]   
        [ 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 ter de 1 a 128 caracteres. Para novas colunas, column_name podem ser omitidas para colunas criadas com um tipo de dados de carimbo de data/hora . 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.

computed_column_expression

É uma expressão que define o valor de uma coluna calculada. Uma coluna computada é uma coluna virtual que não está fisicamente armazenada na tabela, mas é calculada a partir de uma expressão que usa outras colunas na mesma tabela. Uma expressão deve produzir um valor. Por exemplo, uma coluna computada pode ter a definição: custo AS preço * qty. Outro exemplo com operadores bitwise: is_finalised AS is_checked | is_approved. A expressão pode ser um nome de coluna não calculado, constante, função, variável e qualquer combinação destes conectados por um ou mais operadores. A expressão não pode ser uma condição de pesquisa, subconsulta ou incluir um tipo de dados de alias.

As colunas computadas podem ser usadas em listas selecionadas, cláusulas WHERE, cláusulas ORDER BY ou quaisquer outros locais onde expressões regulares possam ser usadas, mas com as seguintes exceções:

  • Uma coluna computada não pode ser usada como uma definição de restrição DEFAULT ou FOREIGN KEY ou com uma definição de restrição NOT NULL. No entanto, se o valor da coluna computada for definido por uma expressão determinística e o tipo de dados do resultado for permitido em colunas de índice, uma coluna computada poderá ser usada como uma coluna chave em um índice ou como parte de qualquer restrição de CHAVE PRIMÁRIA ou ÚNICA.

    Por exemplo, se a tabela tiver colunas inteiras a e b, a coluna calculada a + b pode ser indexada, mas a coluna computada a + DATEPART(dd, GETDATE()) não pode ser indexada, porque o valor pode mudar em invocações subsequentes.

  • Uma coluna computada não pode ser o destino de uma instrução INSERT ou UPDATE.

    Note

    Como cada linha de uma tabela pode ter valores diferentes para colunas envolvidas em uma coluna calculada, a coluna computada pode não ter o mesmo resultado para cada linha.

PERSISTED

Especifica que o Mecanismo de Banco de Dados armazenará fisicamente os valores computados na tabela e atualizará os valores quando quaisquer outras colunas das quais a coluna computada depende forem atualizadas. Marcar uma coluna computada como PERSISTED permite que um índice seja criado em uma coluna computada que é determinística, mas não precisa. Para obter mais informações, consulte índices em colunas computadas. Todas as colunas computadas usadas como colunas de particionamento de uma tabela particionada devem ser explicitamente marcadas como PERSISTENTES. computed_column_expression deve ser determinística quando PERSISTED é especificado.

NULO | NÃO NULO

Especifica se valores nulos são permitidos na coluna. NULL não é estritamente uma restrição, mas pode ser especificado como NOT NULL. NOT NULL pode ser especificado para colunas computadas somente se PERSISTED também for especificado.

CONSTRAINT

Especifica o início da definição para uma restrição PRIMARY KEY ou UNIQUE.

constraint_name
É a nova restrição. Os nomes de restrição devem 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 fornecido, um nome gerado pelo sistema será atribuído à restrição.

CHAVE PRIMÁRIA

É uma restrição que impõe a integridade da entidade para uma coluna ou colunas especificadas usando um índice exclusivo. Apenas uma restrição de CHAVE PRIMÁRIA pode ser criada para cada tabela.

UNIQUE

É uma restrição que fornece integridade de entidade para uma coluna ou colunas específicas usando um índice exclusivo.

AGRUPADOS | NÃO AGRUPADO

Especifica que um índice clusterizado ou não clusterizado é criado para a restrição PRIMARY KEY ou UNIQUE. Restrições de CHAVE PRIMÁRIA padrão para CLUSTERED. Restrições UNIQUE padrão para NONCLUSTERED.

Se já existir uma restrição ou índice clusterizado em uma tabela, CLUSTERED não poderá ser especificado. Se já existir uma restrição ou índice clusterizado em uma tabela, as restrições de CHAVE PRIMÁRIA serão padronizadas como NONCLUSTERED.

COM FILLFACTOR = FILLFACTOR

Especifica o quão completo o Mecanismo de Banco de Dados do SQL Server deve tornar cada página de índice usada para armazenar os dados de índice. Os valores de de fator de preenchimento especificados pelo usuário podem ser de 1 a 100. Se um valor não for especificado, o padrão será 0.

Important

Documentar WITH FILLFACTOR = fillfactor como a única opção de índice que se aplica a restrições PRIMARY KEY ou UNIQUE é mantido para compatibilidade com versões anteriores, mas não será documentado dessa maneira em versões futuras. Outras opções de índice podem ser especificadas na cláusula index_option (Transact-SQL) da ALTER TABLE.

REFERÊNCIAS CHAVE ESTRANGEIRAS

É uma restrição que fornece integridade referencial para os dados na coluna ou colunas. As restrições de CHAVE ESTRANGEIRA exigem que cada valor na coluna exista na coluna ou colunas referenciadas correspondentes na tabela referenciada. As restrições de CHAVE ESTRANGEIRA podem fazer referência apenas a colunas que são restrições de CHAVE PRIMÁRIA ou EXCLUSIVA na tabela referenciada ou colunas referenciadas em um ÍNDICE EXCLUSIVO na tabela referenciada. As chaves estrangeiras em colunas computadas também devem ser marcadas como PERSISTED.

ref_table
É o nome da tabela referenciada pela restrição FOREIGN KEY.

(ref_column )
É uma coluna da tabela referenciada pela restrição FOREIGN KEY.

EM EXCLUIR { NENHUMA AÇÃO | CASCATA }

Especifica qual ação acontece com as linhas na tabela se essas linhas tiverem uma relação referencial e a linha referenciada for excluída da tabela pai. O padrão é NO ACTION.

SEM AÇÃO
O Mecanismo de Banco de Dados gera um erro e a ação de exclusão na linha da tabela pai é revertida.

CASCADE
As linhas correspondentes são excluídas da tabela de referência se essa linha for excluída da tabela pai.

Por exemplo, no banco de dados, a AdventureWorks2025 tabela ProductVendor tem uma relação referencial com a tabela Vendor. A chave estrangeira ProductVendor.BusinessEntityID faz referência à chave primária Vendor.BusinessEntityID.

Se uma instrução DELETE for executada em uma linha na tabela Vendor e uma ação ON DELETE CASCADE for especificada para ProductVendor.BusinessEntityID, o Mecanismo de Banco de Dados verificará se há uma ou mais linhas dependentes na tabela ProductVendor. Se existirem, as linhas dependentes na tabela ProductVendor serão excluídas, além da linha referenciada na tabela Vendor.

Por outro lado, se NO ACTION for especificado, o Mecanismo de Banco de Dados gerará um erro e reverterá a ação de exclusão na linha Vendor quando houver pelo menos uma linha na tabela ProductVendor que faça referência a ela.

Não especifique CASCADE se a tabela será incluída em uma publicação de mesclagem que usa registros lógicos. Para obter mais informações sobre registros lógicos, consulte Alterações de grupo em linhas relacionadas com registros lógicos.

EM ATUALIZAÇÃO { NENHUMA AÇÃO }

Especifica qual ação acontece com as linhas na tabela criada quando essas linhas têm uma relação referencial e a linha referenciada é atualizada na tabela pai. Quando NO ACTION é especificado, o Mecanismo de Banco de Dados gera um erro e reverte a ação de atualização na linha Vendor se houver pelo menos uma linha na tabela ProductVendor que faz referência a ela.

NÃO SE DESTINA À REPLICAÇÃO

Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

Pode ser especificado para restrições de CHAVE ESTRANGEIRA e restrições de VERIFICAÇÃO. Se essa cláusula for especificada para uma restrição, ela não será imposta quando os agentes de replicação executarem operações de inserção, atualização ou exclusão.

CHECK

É uma restrição que impõe a integridade do domínio limitando os valores possíveis que podem ser inseridos em uma coluna ou colunas. As restrições CHECK em colunas computadas também devem ser marcadas como PERSISTED.

logical_expression
É uma expressão lógica que retorna TRUE ou FALSE. A expressão não pode conter uma referência a um tipo de dados de alias.

EM { partition_scheme_name(partition_column_name) | grupo de ficheiros| "padrão"}

Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

Especifica o local de armazenamento do índice criado para a restrição. Se partition_scheme_name for especificado, o índice será particionado e as partições serão mapeadas para os grupos de arquivos especificados por partition_scheme_name. Se o grupo de arquivos for especificado, o índice será criado no grupo de arquivos nomeado. Se "default" for especificado ou se ON não for especificado, o índice será criado no mesmo grupo de arquivos que a tabela. Se ON for especificado quando um índice clusterizado for adicionado para uma restrição de CHAVE PRIMÁRIA ou EXCLUSIVO, toda a tabela será movida para o grupo de arquivos especificado quando o índice clusterizado for criado.

Note

Neste contexto, o padrão não é uma palavra-chave. É um identificador para o grupo de arquivos padrão e deve ser delimitado, como em ON "default" ou ON [default]. Se "default" for especificado, a opção QUOTED_IDENTIFIER deve estar ON para a sessão atual. Esta é a configuração padrão. Para obter mais informações, consulte SET QUOTED_IDENTIFIER (Transact-SQL).

Remarks

Cada restrição PRIMARY KEY e UNIQUE gera um índice. O número de restrições UNIQUE e PRIMARY KEY não pode fazer com que o número de índices na tabela exceda 999 índices não clusterizados e 1 índice clusterizado.

SET QUOTED_IDENTIFIER deve estar ATIVADO quando você estiver criando ou alterando índices em colunas computadas ou exibições indexadas. Para obter mais informações, consulte SET QUOTED_IDENTIFIER (Transact-SQL).

No banco de dados SQL da malha, as colunas computadas podem ser criadas, mas elas serão ignoradas do espelhamento no Fabric OneLake.