Hallo!
Wieso das denn? Das ist doch völlig unpraktisch - was wenn du aufgrund eines Datencrashs mal in mehreren Datensätzen curren_version auf 1 stehen hast? Dann hast du ein Problem.
Schon einmal etwas von Transaktionen gehört? Die sollen so etwas verhindern!
Die letzte Version ist doch in diesem Beispiel eindeutig die, mit dem größten Wert bei lastchange. [...]
Was machst Du, wenn Du eine ältere Version haben möchtest? Entweder du markierst den Datensatz oder legst den Eintrag als neuen Datensatz an.
Immer der neueste Datensatz bezogen auf einen Eintrag:
SELECT
*
FROM
tabelle
WHERE
id_item = 102
AND
lastchange = (
SELECT
MAX(lastchange)
FROM
tabelle
WHERE
id_item = 102);
Immer der neueste Datensatz bezogen auf alle Eintrag, also jeweils von jedem den neusten:
SELECT
*
FROM
tabelle AS a
WHERE
a.lastchange = (
SELECT
MAX(lastchange)
FROM
tabelle AS b
WHERE
a.id_item = b.id_item);
Die Verbindung zwischen den beiden Tabellen, gemäß Hamstars Vorschlag {%DATA%} und {%DATA%}_HISTORY ließe sich hier ja prima über die Spalte item erzeugen. [...]
Bei einer Versionierung, ist jeder Datensatz für sich eigenständig und nicht redundant.
Die zweite Tabelle als Ablage ist unpraktisch.
André Laugks
Die Frau geht, die Hilti bleibt!