Hello,
Sieht man mal wie lange ich nichts mit md5 gemacht habe. Ich sehe gerade der codierte String scheint ja immer genau 32 Zeichen lang zu sein, egal wie lang der eigentlich Text also ist.
Na gut, dann bleibt wohl doch nur die Frage ist meine Vorgehensweise OK?
Unterschiedliche Texte können den gleichen Hashwert ergeben.
Gleiche Texte haben aber immer den gleichen Hashwert.
Allerdings wird hier Groß-/Kleinschreibung ebenfalls Unterschiede erzeugen.
Das Du für unterschiedliche Texte den gelichen Hashwert bekommst, wird zwar vermutlich sehr selten passieren, aber es ist nicht ausgeschlossen. Also müsstest Du, wenn Deine Tabelle in der Spalte Hash bereits den Wert enthält, den Du für den neuen Satz errechnest, die betroffenen Datenwerte direkt vergleichen.
Das wäre eine prima Aufgabe für eine Trigger. Aber leider können MySQL Trigger noch keine Exceptions werfen, jedenfalls soweit ich weiß. Das geht nur mit einem miesen Trick. Wenn Du feststellst, dass Du keinen Eintrag wünschst, lässt Du den Trigger einfach auf eine nicht vorhandene Spalte der Tabelle (dummy
) zugreifen. Dann wird die Operation mit einem Fehler abgebrochen und Du kannst in der Fehlermeldung nachlesen, dass das wegend des Zugriffes auf dummy
passiert ist. Also weißt Du, dass Dein Trigger schuld war. WEnn Du für unterschiedliche Fehlerursachen im Trigger unterschiedliche Dummyspalten benutzt, kannst Du sogar untgrscheiden, warum er die Operation abgelehnt hat.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg