Datensätze eindeutig identifizieren

hallo,

ist es möglich geänderte datensätze hinterhet noch eindeutig zu identifizieren (ohne setzen von indizies)?
bsp:

vorher:
name | vorname | tel
meier | hans | 12345
müller | hermann |56789

name | vorname | tel
meier | hans | 12345
müller | rolf |56000

hintergrund ist der das ich die datensätze habe und prüfen will ob sie sich geändert haben. geht das dann nur mit einem unique-schlüssel?

Hallo Stefan,

wenn du wirklich prüfen willst, ob sich ein Datensatz verändert hat hilft imho auch keine ID, die ich aber in jedem Fall einbauen würde…

Ich hatte eine ähnliche Aufgabe. Dazu habe ich ein zusätzliches Feld „checkSum“ je Datensatz eingebaut in dem ich den „alten“ Zustand sichere. Ich habe dort einen xml Strom mit allen zu prüfenden Inhalten abgelegt.

Dann die Prüfung: Ein Programm, das den aktuellen Inhalt mit der checkSum vergleicht und die geänderten Zeilen anzeigt. Ich hab auch noch angezeigt, was sich geändert hat, also z.B. die Anzahle der Zeichen oder welches Feld. In diesem Programm muss man dann auch die checkSum neu setzen, also die angezeigten Änderungen akzeptieren. Das ist initial eh einmal nötig, also dort auch „Alle zurücksetzen“ ermöglichen!

Passt das zu dem was du vorhast? Oder hab ich das Thema verfehlt?

mfg

Dirk.Pegasus

  • Vielleicht reicht ihm auch ein „Mutationsdtum“. Natürlich nur, wenn das geänderte Attribut nicht identifiziert werden muss. In Oracle gäbe es allerdings noch weiterführende Möglichkeiten …

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

In Oracle gäbe es allerdings noch weiterführende
Möglichkeiten …

„Journalisierung“ oder so … früher hat man alles händisch über die Tabellentrigger in die Journaltabellen geschrieben … jetzt geht das Ganze schon ziemlich komfortabler …

Grüße,
Tomh

moin

geht schon in die richtung
ne checksumme is ne gute idee…

wie speichert eigentlich mysql die datensätze? wenn ich datensatz A, B, C und D einfüge und dann mit nem select ohne sortierung auslese: bekomme ich da immer die selbe reihenfolge (die in der sie eingefügt wurden)?
wenn ich C rauslösche: haben die dann ne reihenfolge wie A-B-D?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Stefan,

geht schon in die richtung
ne checksumme is ne gute idee…

wie speichert eigentlich mysql die datensätze? wenn ich
datensatz A, B, C und D einfüge und dann mit nem select ohne
sortierung auslese: bekomme ich da immer die selbe reihenfolge
(die in der sie eingefügt wurden)?
wenn ich C rauslösche: haben die dann ne reihenfolge wie
A-B-D?

Keine Ahnung, aber: Verlassen würde ich mich da nicht drauf! Gib dem Datensatz eine ID (INT). Die werden aufsteigend (Oder gibt es DBs die das anders machen, also auch „Lücken“ nach dem Löschen eines Datensatzes füllen?) vergeben und können so als Sortierkriterium dienen.

Davon mal abgesehen: Was soll das bringen?

mfg

Dirk.Pegasus

wie speichert eigentlich mysql die datensätze? wenn ich
datensatz A, B, C und D einfüge und dann mit nem select ohne
sortierung auslese: bekomme ich da immer die selbe reihenfolge
(die in der sie eingefügt wurden)?
wenn ich C rauslösche: haben die dann ne reihenfolge wie
A-B-D?

  • Wenn du Datensätze in einer definierten Reihenfolge erhalten willst, musst du ORDER BY einsetzten, ansonsten ist das Ergebnis nicht voraussagebar. Definierte Sortierung = ORDER BY