So arbeiten Sie mit SQL: 2011-System-Versionierte Tabellen

System versioniert Tabellen haben einen anderen Zweck als Anwendungszeitperiodentabellen in SQL und damit anders arbeiten. Anwendungszeitperiodentabellen können Sie Zeiträume zu definieren und den Betrieb auf den Daten, die innerhalb dieser Perioden fällt. Im Gegensatz dazu system versioniert Tabellen sind so konzipiert, wurde eine überprüfbare Aufzeichnung genau zu erstellen, wenn ein Datenelement hinzugefügt, geändert in oder aus einer Datenbank gelöscht.

Zum Beispiel ist es wichtig, eine Bank, genau zu wissen, wenn eine Ein- oder Auszahlung gemacht wurde, und diese Informationen müssen über einen Zeitraum vom Gesetz gehalten werden. Ebenso müssen Börsenmakler genau zu verfolgen, wenn ein Kauf-Transaktion durchgeführt wurde. Es gibt eine Reihe von ähnlichen Fällen, in denen zu wissen, wann ein bestimmtes Ereignis eingetreten ist, bis auf einen Bruchteil einer Sekunde, ist wichtig.

Anwendungen wie der Bankanwendung oder der Börsenmakler-Anwendung haben strenge Anforderungen:

  • Eine Aktualisierung oder Löschvorgang muss den ursprünglichen Zustand der Zeile erhalten, bevor Sie das Update durchführen oder den Betrieb zu löschen.

  • Das System, anstatt den Benutzer behält die Start- und Endzeiten der Perioden der Zeilen.

    Original Zeilen, die zu einer Aktualisierung unterzogen wurden oder Löschoperation verbleiben in der Tabelle und werden als historische Reihen. Die Benutzer können die Inhalte der historischen Zeilen oder die Perioden ändern mit den Zeilen verbunden. Nur kann das System die Perioden der Zeilen in einem System-versioniert Tabelle aktualisieren. Dies wird durch das Aktualisieren der nicht-Periode Spalten der Tabelle oder als Ergebnis der Zeilenlöschungen durchgeführt.

    Diese Einschränkungen garantieren, dass die Geschichte von Datenänderungen ist immun gegen Manipulation und erfüllt damit Prüfstandards und die Einhaltung gesetzlicher Vorschriften.

System versioniert Tabellen unterscheiden sich von den Anwendungszeitperiode Tabellen durch ein paar Unterschiede in der ERSTELLEN Aussagen, die sie erstellen:

  • Während in einem Anwendungszeitperiode Tabelle kann der Benutzer einen beliebigen Namen für die Zeit geben, in einem System-versioniert Tabelle muss der Zeitraum Name sein SYSTEMZEIT.

  • Das ERSTELLEN Anweisung muss die Schlüsselwörter enthalten MIT SYSTEM VERSIONIERUNG. Obwohl SQL: 2011 der Datentyp für den Zeitraum Anfang und Ende der Periode können entweder zu sein DATUM Geben Sie oder eine der Zeitstempel-Typen, werden Sie fast immer wollen eine der Zeitstempel-Typen zu verwenden. Natürlich, was Sie für den Startspalte wählen muss auch für die End-Spalte verwendet werden.

Um die Verwendung von System-versioniert Tabellen veranschaulichen, betrachten Tabellen für die Mitarbeiter und Abteilungen geschaffen. Sie können ein System-versioniert Tabelle mit dem folgenden Code erstellen:

CREATE TABLE employee_sys (EmpID INTEGER, Sys_Start TIMESTAMP (12) RATED ALWAYS AS ROW START, Sys_End TIMESTAMP (12) RATED ALWAYS AS ROW END, EmpName VARCHAR (30), FRIST system_time (SYSSTART, SysEnd)) MIT SYSTEM VERSIONING-

Eine Zeile in einem System-versioniert Tabelle wird als aktuelle Systemreihe, wenn die aktuelle Zeit im System-Zeitperiode enthalten ist, zu sein. Ansonsten wird es als ein historisches System Reihe zu sein.

System versioniert Tabellen sind ähnlich Anwendungszeitperiodentabellen in vielerlei Hinsicht, aber es gibt auch Unterschiede. Hier sind ein paar:

  • Benutzer können nicht zuordnen oder die Werte in den Sys_Start und Sys_End Spalten ändern. Diese Werte werden zugewiesen und automatisch durch das DBMS verändert. Diese Situation wird durch die Schlüsselwörter beauftragt ERSTELLT IMMER.

  • Wenn Sie die INSERT-Operation verwenden, um etwas in ein System-versioniert Tabelle, wird der Wert in der Sys_Start Spalte hinzufügen wird automatisch auf die Transaktion Zeitstempel gesetzt, die bei jeder Transaktion zugeordnet ist. Der Wert, der der Spalte Sys_End zugewiesen ist der höchste Wert dieses Datentyps der Spalte.

  • In System-versioniert Tabellen, die AKTUALISIEREN und LÖSCHEN Operationen funktionieren nur auf aktuellen Systemreihen. Benutzer können sich nicht um historische System Zeilen zu aktualisieren oder zu löschen.

  • Der Benutzer kann das System nicht-Zeitraum Start zu ändern oder zu Zeit entweder Reihen aktuellen oder historischen System beenden.

  • Jedes Mal, wenn Sie entweder die AKTUALISIEREN oder LÖSCHEN Betrieb an einem Stromsystem Reihe, ein historisches System Zeile wird automatisch eingefügt.

    Eine Update-Anweisung auf einem System-versioniert Tabelle einfügt zunächst eine Kopie der alten Reihe, mit seinem System Endzeit der Transaktion Zeitstempel gesetzt. Dies zeigt an, dass die Zeile an dieser Zeitmarke zu sein Strom aufhörte. Als nächstes führt das DBMS das Update gleichzeitig das System periodenStartZeit der Transaktion Zeitstempel zu ändern.

    Nun ist die aktualisierte Zeile ist die aktuelle System Zeile wie der Transaktion Zeitstempel. AKTUALISIEREN Auslöser für die Zeilen in Frage ausgelöst wird, aber EINFÜGEN Trigger wird nicht ausgelöst, obwohl historische Reihen als Teil dieser Operation eingesetzt werden.

EIN LÖSCHEN Betrieb auf einem System-versioniert Tabelle löscht nicht die angegebenen Zeilen. Stattdessen ändert sie die System-Zeit Endzeit dieser Zeilen an das System-Zeitstempel. Dies zeigt an, dass diese Zeilen als der Transaktion Zeitstempel sein Strom aufhörte. Nun diese Zeilen sind Teil des historischen System eher als das derzeitige System. Wenn Sie führen ein LÖSCHEN Betrieb für jeden LÖSCHEN Auslöser für die betroffenen Reihen ausgelöst.

Menü