Alterar o esquema de uma tabela temporal com controle de versão do sistema
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure
Use a instrução ALTER TABLE
para adicionar, alterar ou remover uma coluna.
Exemplos
Aqui estão alguns exemplos que alteram o esquema de 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.mycompany.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Observações importantes
PermissãoCONTROL nas tabelas atual e de histórico é necessária para alterar o esquema da tabela temporal.
Durante uma
ALTER TABLE
operação, 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 de forma apropriada (dependendo do tipo de alteração).
A adição de colunas varchar(max), nvarchar(max), varbinary(max) ou XML com valores padrão será uma operação de atualização de 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.
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 todas as colunas dessa tabela são preenchidas automaticamente pelo sistema.
A opção online (
WITH (ONLINE = ON
) não tem nenhum efeito sobreALTER TABLE ALTER COLUMN
as tabelas temporais com controle de versão do sistema. A coluna ALTER não é executada como online, independentemente do valor especificado para a opção ONLINE.Você pode usar
ALTER COLUMN
para alterarIsHidden
a propriedade para colunas de período.Você não pode usar direct
ALTER
para as alterações de esquema a seguir. Para esses tipos de alterações, definaSYSTEM_VERSIONING = OFF
.- Adicionando uma coluna computada
- Adicionando uma coluna IDENTITY
- Adicionar uma coluna SPARSE ou alterar a coluna existente para ser SPARSE quando a tabela de histórico for definida
DATA_COMPRESSION = PAGE
como ouDATA_COMPRESSION = ROW
, que é o padrão para a tabela de histórico. - Adicionando um COLUMN_SET
- Adicionando uma coluna ROWGUIDCOL ou alterando a coluna existente para ROWGUIDCOL
- Alterando uma coluna NULL para NOT NULL se a coluna contiver valores nulos na tabela atual ou de histórico
O exemplo a seguir demonstra como alterar o esquema em que 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, uma vez que 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;
Próximas etapas
- Tabelas temporais
- Introdução a tabelas temporais com controle da versão do sistema
- Gerenciar a retenção de dados históricos em tabelas temporais com controle de versão do sistema
- Tabelas temporais com controle da versão do sistema com tabelas com otimização de memória
- ALTER TABLE (Transact-SQL)
- Criando uma tabela temporal com controle de versão do sistema
- Modificando dados em uma tabela temporal com controle da versão do sistema
- Consultando dados em uma tabela temporal com controle da versão do sistema
- Interrompendo o controle de versão do sistema em uma tabela temporal com controle de versão do sistema
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários