Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
AzureSQL Managed Instance
SQL database in Microsoft Fabric
Use a instrução ALTER TABLE para adicionar, alterar ou remover uma coluna.
Remarks
CONTROL permissão nas tabelas atual e de histórico é necessária para alterar o esquema da tabela temporal.
Durante uma operação ALTER TABLE, o sistema mantém um bloqueio de esquema em ambas as tabelas.
A alteração de esquema especificada é propagada para a tabela de histórico apropriadamente (dependendo do tipo de alteração).
Adicionar varchar(max), nvarchar(max), varbinary(max) ou colunas XML com valores padrão é uma operação de atualização dos dados em todas as edições do SQL Server.
Se o tamanho da linha após a adição da coluna exceder o limite de tamanho da linha, novas colunas não poderão ser adicionadas online.
Depois de estender uma tabela com uma nova coluna NOT NULL, considere descartar a restrição padrão na tabela de histórico, pois o sistema preenche automaticamente todas as colunas dessa tabela.
A opção online (WITH (ONLINE = ON) não tem qualquer efeito sobre ALTER TABLE ALTER COLUMN com tabelas temporais. A coluna ALTER não é executada como online, independentemente do valor especificado para a opção ONLINE.
Você pode usar ALTER COLUMN para alterar a propriedade IsHidden das colunas de período.
Não é possível usar ALTER direto para as seguintes alterações de esquema. Para esses tipos de alterações, defina SYSTEM_VERSIONING = OFF.
- Adicionar uma coluna computada
- Adicionar uma coluna
IDENTITY - Adicionar uma coluna
SPARSEou alterar a coluna existente para serSPARSEquando a tabela de histórico estiver definida comoDATA_COMPRESSION = PAGEouDATA_COMPRESSION = ROW, que é o padrão para a tabela de histórico. - Adicionar um
COLUMN_SET - Adicionar uma coluna
ROWGUIDCOLou alterar a coluna existente a serROWGUIDCOL - Alterar 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 alteram o esquema da tabela temporal.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
B. Adicionar colunas de período usando o marcador OCULTO
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Você pode usar ALTER COLUMN <period_column> DROP HIDDEN para limpar o sinalizador oculto numa coluna de período.
C. Alterar o esquema com SYSTEM_VERSIONING definido como OFF
O exemplo a seguir demonstra a alteração do esquema onde a configuração SYSTEM_VERSIONING = OFF ainda é necessária (adicionando uma coluna IDENTITY). Este exemplo desabilita a verificação de consistência de dados. Essa verificação é desnecessária quando a alteração de esquema é feita dentro de uma transação, pois nenhuma alteração de dados simultânea 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 NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Conteúdo relacionado
- Tabelas temporais
- Comece a utilizar tabelas temporais versionadas pelo sistema
- Gerencie a retenção de dados históricos em tabelas temporais versionadas pelo sistema
- Tabelas temporais versionadas pelo sistema com tabelas otimizadas para memória
- ALTERAR TABELA (Transact-SQL)
- Criar uma tabela temporal versionada pelo sistema
- Modificar dados em tabela temporal versionada pelo sistema
- Consulta de dados numa tabela temporal versionada pelo sistema
- Parar o versionamento do sistema numa tabela temporal versionada pelo sistema