J'ai créé une table temporaire, comment puis-je vérifier avec un script qu'il a été ajouté. Donc j'essaye de créer un script, pour créer la table temporelle si elle n'a pas déjà été créée. Le si ne fonctionne pas
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
Mais je reçois cette erreur Msg 13597, niveau 16, état 2, ligne 16 Période SYSTEM_TIME temporaire est déjà définie sur la table 'dbo.Car' parce que je l'ai déjà ajouté.
Le moyen le plus simple serait d'utiliser temporal_type
colonne temporal_type
dans sys.tables .
Voici les valeurs totales
colonne temporal_type:
0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
vous pouvez utiliser quelque chose comme ci-dessous:
IF EXISTS (SELECT * FROM sys.table WHERE name = 'Car' AND temporal_type = 2) BEGIN ... END