Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применяется к: SQL Server 2016 (13.x) и более поздним версиям
базе данных SQL Azure
Управляемому экземпляру SQL Azure
базе данных SQL в Microsoft Fabric
Используйте инструкцию ALTER TABLE
для добавления, изменения или удаления столбца.
Замечания
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 в текущей или исторической таблице.
Примеры
А. Изменение схемы темпоральной таблицы
Ниже приведены примеры изменения схемы темпоральной таблицы.
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
для очистки скрытого флага в столбце периода.
В. Измените схему с параметром 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)
- Создание системной темпоральной таблицы
- Изменение данных в системной темпоральной таблице
- Запрос данных в системной темпоральной таблице
- Отключение системного версионирования в системно-версионированной темпоральной таблице