Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
SQL database in Microsoft Fabric
Use a instrução ALTER TABLE para adicionar, alterar ou remover uma coluna.
Remarks
Você precisa de permissão CONTROL nas tabelas atual e de histórico para alterar o esquema de uma tabela temporal.
Durante uma operação ALTER TABLE, o sistema mantém um bloqueio de esquema em ambas as tabelas.
O Mecanismo de Banco de Dados propaga a alteração do esquema para a tabela de histórico, dependendo do tipo de alteração.
Adicionar colunas varchar(max), nvarchar(max), varbinary(max) ou xml com valores padrão é uma operação de atualização de dados em todas as edições do SQL Server.
Se o tamanho da linha após adicionar uma coluna ultrapassar o limite de tamanho de linha, você não pode adicionar novas colunas online.
Quando você estender uma tabela com uma nova coluna NOT NULL, considere descartar a restrição padrão na tabela de histórico, já que o sistema preenche automaticamente todas as colunas dessa tabela.
A opção online (WITH (ONLINE = ON) não tem nenhum efeito em ALTER TABLE ALTER COLUMN em tabelas temporais. A operação ALTER na coluna não é executada online, independentemente do valor que você especificar para a opção ONLINE.
Você pode usar ALTER COLUMN para alterar a propriedade IsHidden nas colunas de período.
Não é possível usar ALTER direto para as alterações de esquema a seguir. Para esses tipos de alterações, defina SYSTEM_VERSIONING = OFF.
- Adicionando uma coluna computada
- Adicionando uma coluna
IDENTITY - Adicionar uma coluna
SPARSEou alterar uma coluna existente paraSPARSEquando a tabela de histórico estiver definida comoDATA_COMPRESSION = PAGEouDATA_COMPRESSION = ROW, que é o padrão da tabela de histórico. - Adicionando um
COLUMN_SET - Adicionar uma
ROWGUIDCOLcoluna ou mudar uma coluna existente para serROWGUIDCOL - Alterando uma coluna
NULLparaNOT NULLse a coluna contiver valores nulos na tabela atual ou de histórico
Examples
A. Alterar o esquema de uma tabela temporal
Aqui estão alguns exemplos que mudam o esquema de uma tabela temporal.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName VARCHAR (100);
ALTER TABLE dbo.Department
ADD WebAddress NVARCHAR (255)
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com' NOT NULL;
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
B. Adicionar colunas de período usando o sinalizador HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
É possível usar ALTER COLUMN <period_column> DROP HIDDEN para remover o atributo oculto de uma coluna de período.
C. Alterar o esquema com SYSTEM_VERSIONING definido como OFF
O exemplo a seguir mostra como mudar o esquema quando ainda é necessário definir SYSTEM_VERSIONING = OFF (adicionar uma IDENTITY coluna). Este exemplo desabilita a verificação de consistência de dados. Essa verificação é desnecessária quando você faz a alteração de esquema dentro de uma transação, pois nenhuma alteração simultânea nos dados pode ocorrer.
BEGIN TRANSACTION;
ALTER TABLE [dbo].[CompanyLocation]
SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation]
ADD Cntr INT IDENTITY (1, 1);
ALTER TABLE [dbo].[CompanyLocationHistory]
ADD Cntr INT
CONSTRAINT DF_Cntr DEFAULT 0 NOT NULL;
ALTER TABLE [dbo].[CompanyLocation]
SET (
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT TRANSACTION;
Conteúdo relacionado
- Tabelas temporais
- Primeiros passos com tabelas temporais versionadas pelo sistema
- Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema
- Tabelas temporais versionadas pelo sistema com tabelas otimizadas para memória
- ALTER TABLE (Transact-SQL)
- Criar uma tabela temporal com controle de versão pelo sistema
- Modificar dados em uma tabela temporal com controle de versão de sistema
- Consultar dados em uma tabela temporal versionada pelo sistema
- Parar o controle de versão de sistema em uma tabela temporal com controle de versão de sistema