Zeilenverlauf
Eine MariaDB-Tabelle, die mit WITH SYSTEM VERSIONING angelegt wurde (MariaDB 10.3 und neuer), bewahrt jede frühere Version jeder Zeile auf: ein UPDATE speichert die alte Version, bevor es die neue schreibt, und ein DELETE behält die Zeile, die es entfernt. NabuSQL zeigt Ihnen diesen Verlauf.
Klicken Sie eine solche Tabelle in der Seitenleiste mit der rechten Maustaste an und wählen Sie Änderungsverlauf. Der Eintrag erscheint nur bei systemversionierten Tabellen — MySQL hat keine, daher sehen Sie ihn dort nie.
Zwei Ansichten
| Ansicht | Was sie zeigt |
|---|---|
| Alle Zeilenversionen | Jede Version jeder Zeile, die neuesten zuerst, jeweils mit dem Zeitraum ihrer Gültigkeit |
| Stand zu einem Zeitpunkt | Die Tabelle genau so, wie sie zum gewählten Datum und zur gewählten Uhrzeit war |
Die ersten beiden Spalten sind Gültig ab und Gültig bis, danach folgen die Spalten der Tabelle. Die noch gültige Version hat kein Ende: unter Gültig bis steht aktuell, und die Zeile ist hervorgehoben.
Serverzeit
Der gewählte Zeitpunkt wird in der Zeitzone des Servers gelesen, ebenso die Zeiten in beiden Spalten. Läuft der Server in einer anderen Zeitzone als Ihr Rechner, geben Sie die Serverzeit ein.
Den Verlauf lesen
- Eine dreimal geänderte Zeile erscheint viermal — das Original und jede Änderung.
- Eine gelöschte Zeile ist weiterhin da, mit einer Zeit unter Gültig bis und ohne aktuelle Version.
INVISIBLE-Spalten bleiben verborgen, wie im Datenraster.- Die Ansicht ist schreibgeschützt: der Verlauf lässt sich nicht bearbeiten.
- Pro Seite werden 500 Versionen angezeigt; ‹ und › blättern, und die Symbolleiste zeigt die Gesamtzahl.
Unterstützte Formen der Versionierung
Alle drei Formen, die MariaDB anbietet, werden erkannt:
| Form | Wie sie deklariert wird | Gültigkeitsspalten |
|---|---|---|
| Einfach | CREATE TABLE … WITH SYSTEM VERSIONING | MariaDBs verborgene ROW_START / ROW_END |
| Eigene Periodenspalten | … GENERATED ALWAYS AS ROW START / ROW END plus PERIOD FOR SYSTEM_TIME (a, b) | Ihre Spalten, sichtbar oder INVISIBLE |
| Transaktionsgenau | Periodenspalten vom Typ BIGINT UNSIGNED | Transaktions-IDs statt Zeiten |
Versionierung einschalten
Führen Sie im SQL-Editor aus:
ALTER TABLE rechnung ADD SYSTEM VERSIONING;Der Verlauf beginnt ab diesem Moment; frühere Änderungen wurden nie aufgezeichnet.
Der Struktur-Editor funktioniert auch bei versionierten Tabellen. MariaDB lehnt jedes ALTER auf ihnen ab, solange system_versioning_alter_history nicht KEEP ist; NabuSQL setzt das daher für seine eigenen Verbindungen, und der vorhandene Verlauf bleibt unverändert.
Größe und Bereinigung
Der Verlauf wird nie von selbst entfernt, eine häufig geänderte Tabelle wächst also. Um Versionen zu löschen, die älter als ein bestimmter Zeitpunkt sind:
DELETE HISTORY FROM rechnung BEFORE SYSTEM_TIME '2026-01-01 00:00:00';Sicherungen, Übertragung und Umbenennen
- Eine Sicherung oder ein Dump enthält die aktuellen Zeilen, und die wiederhergestellte Tabelle ist wieder versioniert — ihr Verlauf beginnt aber neu, wie bei
mysqldump. - Das Umbenennen der Datenbank verschiebt jede Tabelle vollständig, samt Verlauf.
- Die Datenübertragung kopiert die aktuellen Zeilen in eine gewöhnliche Tabelle; soll das Ziel ebenfalls versioniert sein, fügen Sie
SYSTEM VERSIONINGdanach hinzu.
