Ahoj, v současné době pracuji na řešení podobného problému, řeším to rozdělením svých tabulek na dvě, kontrolní tabulku a datovou tabulku. Řídicí tabulka bude obsahovat primární klíč a odkaz na datovou tabulku, datová tabulka bude obsahovat klíč automatické inkrementace revize a primární klíč řídicí tabulky jako cizí klíč.
vezměte si jako příklad tabulku vašich záznamů
Entries Table
+----+-------+------+--------+--------+
| id | title | text | index1 | index2 |
+----+-------+------+--------+--------+
se stává
entries entries_data
+----+----------+ +----------+----+--------+------+--------+--------+
| id | revision | | revision | id | title | text | index1 | index2 |
+----+----------+ +----------+----+--------+------+--------+--------+
dotazovat
select * from entries join entries_data on entries.revision = entries_data.revision;
místo aktualizace tabulky entries_data použijete příkaz insert a poté aktualizujete revizi tabulky záznamů novou revizí tabulky záznamů.
Výhodou tohoto systému je, že se můžete přesunout k různým revizím jednoduše změnou vlastnosti revize v tabulce záznamů. Nevýhodou je nutnost aktualizovat své dotazy. V současné době to integruji do vrstvy ORM, takže se vývojáři stejně nemusí starat o psaní SQL. Další myšlenkou, se kterou si pohrávám, je, aby existovala centralizovaná tabulka revizí, kterou používají všechny datové tabulky. To by vám umožnilo popsat stav databáze jediným číslem revize, podobně jako fungují čísla revizí subversion.