Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к: SQL Server 2016 (13.x) и более поздние версии
Azure SQL Database
Azure SQL Managed Instance
SQL Database в Microsoft Fabric
Используйте инструкцию ALTER TABLE для добавления, изменения или удаления столбца.
Remarks
CONTROL Разрешение на текущие и исторические таблицы требуется для изменения схемы временной таблицы.
Во время ALTER TABLE операции система держит блокировку схемы на обеих таблицах.
Указанные изменения схемы надлежащим образом распространяются на таблицу истории в зависимости от типа изменений.
Добавление varchar(max), nvarchar(max), varbinary(max) или XML-столбцов со значениями по умолчанию является операцией обновления данных во всех редакциях SQL Server.
Если размер строки после добавления столбца превышает ограничение размера строки, новые столбцы нельзя добавлять в режим "в сети".
После расширения таблицы с новым NOT NULL столбцом рекомендуется удалить ограничение по умолчанию в таблице журнала, так как система автоматически заполняет все столбцы в этой таблице.
Параметр online (WITH (ONLINE = ON) не влияет на темпоральные таблицы ALTER TABLE ALTER COLUMN.
ALTER столбец не работает в режиме онлайн, независимо от того, какое значение было указано для параметра ONLINE.
Можно использовать ALTER COLUMN для изменения IsHidden свойства для столбцов периодов.
Вы не можете использовать прямой ALTER для следующих изменений схемы. Для этих типов изменений задайте SYSTEM_VERSIONING = OFF.
- добавление вычисляемого столбца;
- Добавление столбца
IDENTITY - Добавление столбца
SPARSEили изменение существующего столбца наSPARSE, когда таблица журнала установлена наDATA_COMPRESSION = PAGEилиDATA_COMPRESSION = ROW, что является значением по умолчанию для таблицы журнала. - Добавление
COLUMN_SET - Добавление столбца
ROWGUIDCOLили изменение существующего столбца наROWGUIDCOL - Изменение столбца
NULLнаNOT NULL, если столбец содержит значения NULL в текущей или исторической таблице.
Examples
A. Изменение схемы темпоральной таблицы
Ниже приведены примеры изменения схемы темпоральной таблицы.
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. Добавьте столбцы периодов, используя флаг HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Можно использовать ALTER COLUMN <period_column> DROP HIDDEN для очистки скрытого флага в столбце периода.
C. Измените схему с параметром SYSTEM_VERSIONING set to OFF
В следующем примере показано изменение схемы, в которой по-прежнему требуется параметр SYSTEM_VERSIONING = OFF (добавление столбца IDENTITY ). В этом примере отключена проверка согласованности данных. Эта проверка не требуется, если изменения схемы выполнены в рамках транзакции, так как в течение этого периода не могут произойти другие изменения данных.
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;
Связанный контент
- Темпоральные таблицы
- Начало работы с системными темпоральными таблицами
- Управление хранением исторических данных в системных темпоральных таблицах
- Системные темпоральные таблицы с оптимизированными для памяти таблицами
- Инструкция ALTER TABLE (Transact-SQL)
- Создание системной темпоральной таблицы
- Изменение данных в системной темпоральной таблице
- Запрос данных в системной темпоральной таблице
- Отключение системного версионирования в системно-версионированной темпоральной таблице