这是我们将现有非时间转换为时间
的方法CREATE SCHEMA History;
GO
ALTER TABLE InsurancePolicy
ADD
SysStartTime datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN
CONSTRAINT DF_SysStart DEFAULT SYSUTCDATETIME()
, SysEndTime datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN
CONSTRAINT DF_SysEnd DEFAULT CONVERT(datetime2 (0), '9999-12-31 23:59:59'),
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
GO
ALTER TABLE InsurancePolicy
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.InsurancePolicy))
;
有人可以解释一下:
使用默认值将具有默认值的非可空列添加到现有表中 数据是SQL Server以外的所有版本上的数据操作大小 企业版(它是元数据操作)。随着一个大 包含SQL Server Standard Edition数据的现有历史记录表, 添加非空列可能是一项昂贵的操作。
我正在使用SQL Server标准版,如何通过添加非空列字段来进行昂贵的操作。
答案 0 :(得分:0)
可以在不更改数据记录的情况下添加可为空的列。默认情况下,它们只是null
值,并且不必修改单个记录。
使任何新字段不可为空,如果您有现有记录隐式需要默认值,则要求它在每条记录上设置默认值 。根据需要更新的记录数量,这绝对可能是一项昂贵的操作" *。
*注意:这适用于任何表格更改而不仅仅是时间表。