Cronologia delle righe
Una tabella MariaDB creata con WITH SYSTEM VERSIONING (MariaDB 10.3 e successivi) conserva ogni versione precedente di ogni riga: un UPDATE salva la versione vecchia prima di scrivere la nuova, e un DELETE conserva la riga che elimina. NabuSQL vi permette di consultare questa cronologia.
Clic destro su una tabella di questo tipo nella barra laterale e scegliete Cronologia modifiche. La voce compare solo sulle tabelle con versionamento di sistema — MySQL non ne ha, quindi su MySQL non la vedrete mai.
Due viste
| Vista | Cosa mostra |
|---|---|
| Tutte le versioni delle righe | Ogni versione di ogni riga, le più recenti prima, ciascuna con l'intervallo in cui era valida |
| Stato a un istante | La tabella esattamente com'era alla data e ora scelte |
Le prime due colonne sono Valida da e Valida fino a, seguite dalle colonne della tabella. La versione ancora in vigore non ha fine: in Valida fino a compare attuale e la riga è evidenziata.
Ora del server
L'istante scelto è interpretato nel fuso orario del server, come gli orari nelle due colonne. Se il server usa un fuso diverso dal vostro computer, inserite l'ora del server.
Leggere la cronologia
- Una riga modificata tre volte compare quattro volte — l'originale e ogni modifica.
- Una riga eliminata resta presente, con un orario in Valida fino a e nessuna versione attuale.
- Le colonne
INVISIBLErestano nascoste, come nella griglia dati. - La vista è di sola lettura: la cronologia non si può modificare.
- Si mostrano 500 versioni per pagina; ‹ e › cambiano pagina e la barra degli strumenti indica il totale.
Forme di versionamento supportate
Sono riconosciute tutte e tre le forme offerte da MariaDB:
| Forma | Come si dichiara | Colonne di validità |
|---|---|---|
| Semplice | CREATE TABLE … WITH SYSTEM VERSIONING | Le colonne nascoste ROW_START / ROW_END di MariaDB |
| Colonne di periodo proprie | … GENERATED ALWAYS AS ROW START / ROW END più PERIOD FOR SYSTEM_TIME (a, b) | Le vostre colonne, visibili o INVISIBLE |
| Per transazione | Colonne di periodo di tipo BIGINT UNSIGNED | ID di transazione al posto degli orari |
Attivare il versionamento
Eseguite nell'editor SQL:
ALTER TABLE fattura ADD SYSTEM VERSIONING;La cronologia parte da quel momento; le modifiche precedenti non sono mai state registrate.
L'editor della struttura funziona anche sulle tabelle versionate. MariaDB rifiuta qualsiasi ALTER su di esse a meno che system_versioning_alter_history sia KEEP, quindi NabuSQL lo imposta per le proprie connessioni; la cronologia esistente resta invariata.
Dimensioni e pulizia
La cronologia non viene mai rimossa da sola, quindi una tabella modificata spesso cresce. Per eliminare le versioni più vecchie di un dato istante:
DELETE HISTORY FROM fattura BEFORE SYSTEM_TIME '2026-01-01 00:00:00';Backup, trasferimenti e rinomina
- Un backup o dump porta le righe attuali e la tabella ripristinata è di nuovo versionata — ma la sua cronologia riparte da zero, come con
mysqldump. - Rinominare il database sposta ogni tabella per intero, cronologia compresa.
- Il trasferimento dati copia le righe attuali in una tabella normale; se volete il versionamento anche sulla destinazione, aggiungete
SYSTEM VERSIONINGin seguito.
