【发布时间】:2017-08-01 09:03:15
【问题描述】:
我最近一直在研究临时表,并已成功地将它们应用于我的一张表。我需要将它应用到数据库中的其他表,所以我运行了一个类似于下面示例的脚本。但是,在我的第二张桌子上运行它时,我得到一个
Msg 2714, Level 16, State 5, Line 1 已经有一个对象名为 数据库中的“DF_ValidFrom”。
下面的文章似乎暗示您可以在 Product 和 Location 以及表中使用相同的约束。任何人都有将现有表更改为临时表的经验吗?
ALTER TABLE Product
ADD
SysStartTime datetime2 (2) GENERATED ALWAYS AS ROW START HIDDEN
constraint DF_ValidFrom DEFAULT DATEADD(second, -1, SYSUTCDATETIME())
, SysEndTime datetime2 (2) GENERATED ALWAYS AS ROW END HIDDEN
constraint DF_ValidTo DEFAULT '9999.12.31 23:59:59.99'
, PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
ALTER TABLE Product
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.ProductHistory));
ALTER TABLE [Location]
ADD
SysStartTime datetime2 (2) GENERATED ALWAYS AS ROW START HIDDEN
constraint DF_ValidFrom DEFAULT DATEADD(second, -1, SYSUTCDATETIME())
, SysEndTime datetime2 (2) GENERATED ALWAYS AS ROW END HIDDEN
constraint DF_ValidTo DEFAULT '9999.12.31 23:59:59.99'
, PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
ALTER TABLE [Location]
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.LocationHistory));
全文在这里 https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-table-usage-scenarios
提前感谢您的帮助。
【问题讨论】:
-
约束和其他对象一样,需要不同的名字保存在sql server数据默认表中。您只需将名称 DF_validfrom 更改为另一个名称。
标签: sql sql-server temporal temporal-tables