Wie Track Daten mit SQL: 2011 Bitemporale Tabellen

Manchmal möchte man wissen beide, wenn ein Ereignis eingetreten ist in der realen Welt und wenn das Ereignis wurde in der SQL-Datenbank. Für Fälle wie diese, können Sie eine Tabelle verwenden, die sowohl eine system versioniert Tabelle und eine Anwendungszeitperiode Tabelle ist. Solche Tabellen werden als bitemporalen Tabellen bekannt.

Es gibt eine Anzahl von Fällen, in denen ein bitemporale Tabelle könnte gefordert werden. Nehmen wir zum Beispiel, dass einer Ihrer Mitarbeiter bewegt ihren Wohnsitz über die Grenze von Oregon nach Washington. Sie müssen der Tatsache Rechnung tragen, dass ihre staatliche Einkommensteuerabzug ab dem offiziellen Datum des Umzugs muss sich ändern.

Es ist jedoch unwahrscheinlich, dass die Änderung in der Datenbank werden auf genau gleichen Tag vorgenommen werden. Beide Male müssen aufgezeichnet werden, und eine bitemporalen Tabelle kann sehr gut, dass die Aufzeichnung tun. Die System-versioniert Zeitraum Aufzeichnungen, wenn die Änderung in der Datenbank bekannt wurde, und die Anwendungszeitperiode Aufzeichnungen, wenn der Umzug ging rechtlich in Kraft. Hier einige Beispiel-Code, eine solche Tabelle zu erstellen:

CREATE TABLE employee_bt (EmpID INTEGER, EmpStart DATE, EmpEnd DATE, EmpDept IntegerPERIOD FÜR EmpPeriod (EmpStart, EmpEnd), Sys_Start TIMESTAMP (12) ERSTELLT ALWAYSAS ROW START, Sys_End TIMESTAMP (12) ERSTELLT ALWAYSAS ROW END, EmpName VARCHAR (30), EmpStreet VARCHAR (40), EmpCity VARCHAR (30), EmpStateProv VARCHAR (2), EmpPostalCode VARCHAR (10), FRIST system_time (Sys_Start, Sys_End), PRIMARY KEY (EmpID, EPeriod überschneidungsfrei), FOREIGN KEY (EDept, PERIODE EPeriod) LITERATUR Dept (DeptID, PERIODE DPeriod)) MIT SYSTEM VERSIONING-

Bitemporale Tabellen dienen den Zwecken der beiden System-versioniert Tabellen und Anwendungszeittabellen. Der Benutzer liefert Werte für die anwendungs ​​Zeitraum Start- und Zielspalten. Ein EINFÜGEN Betrieb in einer solchen Tabelle stellt automatisch den Wert des Systemzeitperiode zu der Transaktionszeitstempel. Der Wert des Systemzeitperiode Ende Spalte wird auf den höchsten Wert für den Spaltendatentyp zulässigen automatisch eingestellt.

AKTUALISIEREN und LÖSCHEN Operationen arbeiten, wie sie für Standard-Anwendungszeitperiode Tabellen tun. Wie verhält es sich mit System-versioniert Tabellen, AKTUALISIEREN und LÖSCHEN Operationen wirken sich nur auf aktuellen Zeilen, und mit einer solchen Operation eine historische Reihe wird automatisch eingefügt.

Eine Abfrage gemacht auf einem bitemporalen Tabelle kann eine anwendungs ​​Zeitraum angeben, ein System-versioniert Zeit oder beides. Hier ist ein Beispiel für die # 147-beide # 148- Fall:

SELECT EmpIDFROM employee_bt FÜR Systemzeit als OFTIMESTAMP '2013-07-15 00: 00: 00'WHERE EmpID = 314159 ANDEmpPeriod ENTHÄLT DATUM' 2013.06.20 00: 00: 00'-

Menü