So verwenden Sie die temporale SQL Server -Tabelle

So verwenden Sie die temporale SQL Server -Tabelle
Temporale Tabellen, auch als systemversionierte Tabellen bezeichnet, sind Tabellen, mit denen Sie einen Verlauf der Daten in einer bestimmten Tabelle verfolgen und aufbewahren können. Mithilfe von zeitlichen Tabellen können Sie den Verlauf der Änderungen an den Daten in einer Tabelle verfolgen.

Dieser Artikel bildet eine Grundlage für das Erstellen, Arbeiten und die Verwendung zeitlicher Tabellen in SQL Server.

Systemversionierte Tabellen wurden im ANSI SQL 2011 -Standard eingeführt und wurden als Funktion in SQL Server 2016 und oben verfügbar.

Im Gegensatz zu einer normalen Tabelle, die nur aktuelle Daten anzeigen und arbeiten kann, können Sie mit den zeitlichen Tabellen auch mit zuvor gelöschten Daten anzeigen und arbeiten. Wie bereits erwähnt, ist dies aufgrund der Fähigkeit einer zeitlichen Tabelle möglich, die Änderungen an den Daten in einer Tabelle zu verfolgen.

Die Tabelle enthält zwei Schlüsselspalten: SysStartTime und SysendTime. Diese beiden Spalten werden verwendet, um die vorhandenen und vorherigen Daten für jeden Datensatz in einer Tabelle zu definieren. Sie können bestimmte Zeitintervalle verwenden, um anzuzeigen, wie sich die Daten in einer Tabelle geändert haben.

Erstellen Sie eine zeitliche Tabelle

Bevor Sie eine zeitliche Tabelle erstellen können, muss sie die folgenden Anforderungen erfüllen:

  1. Eine zeitliche Tabelle muss eine primäre Schlüsselbeschränkung enthalten.
  2. Es muss zwei Spalten enthalten, um das Start- und Enddatum aufzuzeichnen. Diese Spalten müssen vom Datentyp von DateTime2 sein. Die Spalten sollten als Zeilenstart/Ende als generiert deklariert werden.
  3. SQL Server geht davon aus, dass die beiden Spalten nicht nullbar sind. Daher schlägt die Anweisung Create Table fehl, wenn die Abfrage versucht, Spalten festzulegen, die nullbar sind.
  4. SQL Server generiert automatisch eine Verlaufstabelle mit einem ähnlichen Schema wie die zeitliche Tabelle.
  5. Sie können in einer versionierten Systemversion nicht anstelle von Triggern verwenden.
  6. Die Verlaufstabelle sollte keine Einschränkungen enthalten.
  7. Sie können die Daten in der Verlaufstabelle nicht ändern.
  8. Aussagen wie Einfügen und Aktualisierung können nicht auf die Spalten der Periodenspalten verweisen.
  9. Die Verlaufstabelle wird als Zeilenverlaufstabelle erstellt, und die Seitenkomprimierung wird gegebenenfalls angewendet. Andernfalls bleibt der Tisch unkomprimiert.
  10. SQL Server generiert automatisch einen Clustered-Index für die Verlaufstabelle.

So erstellen Sie eine zeitliche Tabelle: T-SQL

Schauen wir uns eine einfache Demonstration der Erstellung einer zeitlichen Tabelle an. Betrachten Sie die unten angegebene Beispielabfrage:

Erstellen Sie Tabelle DBO.my_temporal_table (
Id int,
fname varchar (50),
E -Mail Varchar (255),
Abteilungsvarchar (50),
Einschränkung PK Primärschlüssel (ID),
SyStartTime datetime2 generiert immer als Zeile starten nicht null,
SysendTime datetime2 generiert immer als Zeilenende nicht null,
Periode für System_Time (sysStartTime, sysendTime)) mit (system_versioning = on);

Sobald wir die obige Abfrage ausgeführt haben, erstellt der SQL -Server die Tabelle mit dem angegebenen Namen.

Im SQL Server Management Studio können Sie eine versionierte System -Tabelle anzeigen, indem Sie die Option Tabellen in Ihrer Zieldatenbank erweitern:

Beachten Sie, dass der SQL -Server automatisch eine Verlaufstabelle mit einem ähnlichen Schema wie die systemversionierte Tabelle generiert. Achten Sie jedoch auf die Spalten in der Verlaufstabelle. Beachten Sie, dass sie keine Einschränkungen haben.

Betrachten Sie das unten gezeigte Bild:

Wie Sie sehen werden, generiert SQL Server eine Verlaufstabelle unter einem Namen nach einem bestimmten Format. Um einen benutzerdefinierten Namen für Ihre Verlaufstabelle festzulegen, geben Sie ihn in der angezeigten Erstellung der Tabellenanweisung an:

---
Periode für System_Time (sysStartTime, sysendTime)) mit (system_versioning = on, history_table = mytemporal_tableHistory);
---

Wenn Sie die Option Indizes für die Verlaufstabelle erweitern, stellen Sie anschließend fest, dass SQL Server automatisch einen Clustered-Index automatisch generiert hat:

Verwenden von temporalen Tabellen

Testen wir die Funktionalität zeitlicher Tabellen, indem wir einige Datensätze in die Tabelle einfügen. Betrachten Sie die unten angegebene Beispielabfrage:

In my_temporal_table einfügen (ID, Fname, E -Mail, Abteilung)
Werte (1, 'John Davis', '[email protected] ',' Front-End '),
(2, 'Ruby Raw', '[email protected] ',' Datenbank '),
(3, 'Scott Turner', '[email protected] ',' Full-Stack '),
(4, 'Alice Jensen', '[email protected] ',' Versionskontrolle '),
(5, 'Peter Green', '[email protected] ',' Backend ');

Sobald wir die Beispieldaten in die Tabelle eingefügt haben, können wir sie als:

Wählen Sie * aus my_temporal_table;

Sie sollten eine Ausgabe in der Nähe des unten gezeigten als

Um zu verstehen, wie die versionierte System -Tabelle funktioniert, lassen Sie uns Zeilen in der Tabelle löschen und aktualisieren:

Löschen aus my_temporal_table wobei Abteilung = 'Datenbank';
Aktualisieren Sie my_temporal_table set fname = 'John m' wobei id = 5;

Fragen Sie die Daten in der Haupttabelle an:

Wählen Sie * aus my_temporal_table;

Wenn Sie die Tabelle der Verlauf abfragen, sollten Sie die alte Version der Daten mit den richtigen Zeitstempeln sehen.

Abschluss

Dieser Leitfaden behandelte das Konzept der temporalen oder systemversionierten Tabelle in SQL Server. Mit diesem Handbuch sind Sie in der Lage, den Verlauf Ihrer Daten mithilfe von SQL Server Temporal Tabellen zu verfolgen. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Linux -Hinweisartikel für Tipps und Tutorials finden Sie in Bezug auf Linux -Hinweise.