2017-03-02 7 views
1

Ich habe eine temporäre Tabelle erstellt, wie kann ich mit einem Skript überprüfen, dass es hinzugefügt wurde. Also ich versuche ein Skript zu erstellen, um die temporale Tabelle zu erstellen, wenn sie nicht bereits erstellt wurde. Die, wenn nichtÜberprüfen, ob zeitliche Tabelle vorhanden ist

arbeiten
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 

aber ich habe diesen Fehler Msg 13597, Ebene 16, Status 2, Zeile 16 Temporal system_time Zeitraum ist bereits auf dem Tisch definiert ‚dbo.Car‘, weil ich es bereits hinzugefügt haben .

+0

überprüfen, ob die Spalte SYSTEM_TIME existiert – Backs

+0

Sieh dir diese Antwort von den anderen Tagen an ... http://stackoverflow.com/questions/42511328/sql-server-create-temp-table-if-doesnt-exist/42512671?noredirect= 1 # Kommentar72162698_42512671 – manderson

Antwort

2

Der einfachste Weg wäre temporal_type Spalte in sys.tables.

Im Folgenden sind die Gesamtwerte

temporal_type Säule:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

Sie so etwas wie unten verwenden:

IF EXISTS (SELECT * FROM sys.table WHERE name = 'Car' AND temporal_type = 2) 
BEGIN 
     ... 
END 
Verwandte Themen