检查临时表是否存在

Ini*_*ton 1 sql-server azure-sql-database

我创建了一个临时表,如何使用脚本验证它是否已添加。因此,我正在尝试创建一个脚本,以创建尚未创建的时态表。如果不起作用

IF (OBJECT_ID('[dbo].[CarHistory]') IS NULL) 
BEGIN
Print 'Add Temporal table to Car table'

Alter table Car 
ADD SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN DEFAULT GETUTCDATE(),
SysEndTime  DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN DEFAULT CONVERT(DATETIME2, '9999-12-31 23:59:59.9999999'),
             PERIOD FOR SYSTEM_TIME (StartTime, EndTime)

ALTER TABLE dbo.Car SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE=dbo.CarHistory));

END
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息 13597, Level 16, State 2, Line 16 Temporal SYSTEM_TIME period is already defined on table 'dbo.Car' 因为我已经添加了它。

Jov*_*SFT 5

最简单的方法是temporal_typesys.tables 中列。

以下是总价值

temporal_type 列:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

您可以使用以下内容:

IF EXISTS (SELECT * FROM sys.table WHERE name = 'Car' AND temporal_type = 2)
BEGIN
        ...
END
Run Code Online (Sandbox Code Playgroud)