Robert R.: MySQL 5.5.34 aus dem XAMPP-Paket

Beitrag lesen

Lieber Mitdenker Hotti,
liebe Wissende,
liebe Neugierige,

ja!

Wie kann ich verhindern, dass ein doppelter Eintrag in der Spalte auftaucht, mit Ausnahme von NULL oder Leerstring. Die sind beide erlaubt.

Möglicherweise ist die gewünschte Eindeutigkeit an (ein) weitere(s) Feld(er) gebunden? Das hängt von Deiner Gesamtsituation ab.

Nö. Das ist doch auf Wunsch rangefrickelt worden von meinem Vorgänger, hat aber diverse Sicherheitsmacken gehabt, die von den Kunden bemängelt wurden.

Kurz: In der Tabelle stehen persönliche Daten. Die werden teilweise allen Mitgliedern der Community zur Verfügung gestellt. Nun sollte auch noch ein Bild aufgenommen werden. Das sollte aber nur für diejeniche sichtbar sein, die auch die Daten sehen dürfen.

Es kam immer wieder vor, dass Dateinamen für die Bilder gesendet wurden, die es schon gab ('portrait.jpg' ist da sehr beliebt). Leider wurden die auch direkt zum Speichern verwendet. Diese ganzen Designfehler habe ich dank des umfangreichen Artikels "File Uploads" im Wiki auch soweit alle ausgemerzt. Nun könnte es aber trotzdem immer noch passieren, dass in der DB ein  Filename doppelt auftaucht, weil es noch diverse alte Eintragungen gibt, für die (im Moment) keine Files mehr da sind. Beim Anlegen einer neuen Datei im Repository würde das daher also nicht auffallen, erst beim Speichern in der Tabelle. Dann hätte nämlich irgendjemand plötzlich das Bild eines Anderen in seinem Profil. Da am Bild auch noch drei Spalten mit Extrainfomationen hängen, würden die in der _Anzeige_ ggf. überschrieben durch die anderen, die schon da waren für den ersten Bildbesitzer im Abfrageergebnis. Das näher zu erläutern würde jetzt auch zu weit führen. Ich kann nicht alles reparieren.

Jedenfalls dürfen doppelte Bezeichner in der Spalte imagelink nicht auftreten, mit Ausnahme von NULL und leerem Bezeichner. Dann habe ich das Problem vom Tisch!

Eine separate Tabelle für die Bilder anzulegen würde leider an allen anderen Stellen des Modules auch Änderungen erforderlich machen. Das wäre sehr aufwändig und wird nicht bezahlt: "Wieso, es geht doch...". Spätetestens, wenn ein Teilnehmer des Kunden sich beschwert, hat der Kunde aber vergessen, dass er das gesagt hat. Das kenne ich schon. Und mein Chef ist da leider auch weich wie ein Wackelpudding. Der dreht sich das immer so dass _er_ hübsch aussieht.

Wenn es keine Ausnahemregeln für Indexe gibt bei MySQL (ich kenne sowas von anderen DBMS: bdeingte Aufnahme in den Index), dann scheint mir der schmerzloseste Weg zu sein, den Insert- und den Update-Trigger anzupassen. Die Trigger-Exceptions werde ich gegenüber dem Client nicht durchreichen. Dann hat es eben mal nicht funktioniert. Aber es gelangen keine fehlerhaften Daten mehr in die Tabelle.

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist wiederbelebt werden!