2017-03-02 75 views
1

我已經創建了一個臨時表,我如何驗證它已添加的腳本。所以我試圖創建一個腳本,創建臨時表,如果它尚未創建。該如果還是不行檢查是否存在臨時表

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 

,但我得到這個錯誤 消息13597,級別16,狀態2,行16 時空SYSTEM_TIME週期已經被定義在表「dbo.Car」,因爲我已經添加了它。

+0

檢查列SYSTEM_TIME是否存在 – Backs

+0

從前幾天看這個答案... http://stackoverflow.com/questions/42511328/sql-server-create-temp-table-if-doesnt-exist/42512671?noredirect= 1個#comment72162698_42512671 – manderson

回答

2

最簡單的方法是在sys.tablestemporal_type列。

以下是在合計值

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