2017-03-02 7 views
1

一時テーブルを作成しました。追加されたスクリプトでどのように確認できますか?だから私はスクリプトを作成しようとしています、まだ作成していない場合は一時テーブルを作成する。 16 時間的SYSTEM_TIME期間はすでに表に定義されている「dbo.Car」私はすでにそれを追加したためメッセージ13597、レベル16、状態2、行を一時テーブルが存在するかどうかをチェック

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 

を働くが、私はこのエラー を取得していない場合。

+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

最も簡単な方法はtemporal_type列のsys.tablesです。あなたは以下のようなものを使用することができます

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 

以下

は合計値

temporal_typeコラムです

関連する問題