SQL Herausfinden ob Row in Tabelle geändert wurde

Danny787

Ensign
Registriert
Jan. 2007
Beiträge
180
Hallo liebe Community,

ich suche eine Lösung für folgendes Problem:

Ich habe ein Java Programm, welches aus einer externen H2 Datenbank (wo ich keine Columns einfügen kann) Datensätze extrahiert. Um die extrahierten Datensätze immer aktuell zu halten suche ich nun nach einer Möglichkeit diejenigen Datensätze zu identifizieren, die sich seit dem Vorgang geändert haben.

Welche Möglichkeiten bieten sich mir um dies zu bewerkstelligen?
Vielen Dank schon mal im Voraus
 
id's und inhalte mit nem outer joun vergleichen und eine beliebige spalte der auf änderung zu prüfenden tabelle auf NULL prüfen.
 
Wenn du einen Trigger und eine neue Tabelle erstellen darfst, dann geht folgende Möglichkeit:
Ein Trigger auf die Tabelle schreibt die ID + Timestamp + update/insert/delete in eine neue Change-Tabelle. Die kannst du dann einfach abfragen.
 
Was mir so auf Anhieb einfällt:

in der entsprechenden Tabelle ein Timestamp-Feld mit dem Defaultwert

Code:
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
(mySQL-Syntax)

einfügen.

Jedesmal, wenn der Datensatz geändert wird, ändert die DB automatisch den Feldinhalt
des Timestamp-Feldes mit.

Im Programm merkst Du dir dann den neuesten Timestamp der Abgefragten Datensätze und bei der nächsten Abfrage fragst Du nur nach Datensätzen, deren Timestamp neuer als der letzte Timestamp sind.

Gruß, X__

PS:Sorry, habe jetzt erst gelesen, dass Du keine Columns einfügen darfst :(
 
das nichts aendern darfst suckt natueich.
wenn es nur um neue datensaetze geht kannst ja gucken ob es seit dem letzenmal neue date.saetze gibt.

Da du an der table nichts aendern darfst hilft wohl nur stuendlich oder kuerzer die datenbank zu checken, koennte mitunter aber "teuer" werden.

kannst du dich nicht informieren lassen vom programm, welches mit der db kommuniziert?

oder nen dump erzeugen, jede zeile hashen und merken. ist aber auch teuer, gerade wenns extern ist
 
Zurück
Oben