Guten Abend,
ich habe momentan ein Problem beim Löschen von Datensätzen.
Ich arbeite mit einer MySQL Datenbank und habe zwei Tabellen:
Zum einen diese:
Tabelle 1:
|ID|IDNr|....
ID und IDNr sind Unique. Es können mehrere Einträge für eine ID existieren, wobei dann immer die IDNr unterschiedlich ist.
Dann habe ich noch eine andere Tabelle:
|ID|lang|...
ID ist hier primary key und gleichzeitig ein fremdschlüssel auf die ID der ersten Tabelle.
Sobald eine Zeile aus der ersten Tabelle gelöscht wird, sodass die gelöschte ID in der gesamten Tabelle nicht mehr existiert, soll der zugehörige Datensatz in der 2.Tabelle für die entsprechende ID auch gelöscht werden.
Habe das mal mit On DELETE CASCADE probiert nur ist das Problem hier, dass er nach jedem gelöschten Datensatz in der ersten Tabelle den entsprechenden Datensatz in der zweiten Tabelle gelöscht hat, obwohl die ID in der ersten Tabelle noch existieren könnte.
Er sollte also bevor den Datensatz des Fremdschlüssels löscht erst einmal überprüfen, dass es keinen Datensatz mehr mit der ID in der ersten Tabelle gibt und erst dann sollte er in die zweite Tabelle reingehen und löschen.
Ich würde On Delete Cascade also gerne irgendwie erweitern oder existiert für sowetwas schon eine Funktion??
Oder muss ich das mit einerm Trigger machen? Wenn ja wie würde das ungefähr aussehen? Wie müsste ich dann vorgehen?
Hoffe habe mich verständlich ausgedrückt wo das Problem liegt.
liebe Grüße daniel
ich habe momentan ein Problem beim Löschen von Datensätzen.
Ich arbeite mit einer MySQL Datenbank und habe zwei Tabellen:
Zum einen diese:
Tabelle 1:
|ID|IDNr|....
ID und IDNr sind Unique. Es können mehrere Einträge für eine ID existieren, wobei dann immer die IDNr unterschiedlich ist.
Dann habe ich noch eine andere Tabelle:
|ID|lang|...
ID ist hier primary key und gleichzeitig ein fremdschlüssel auf die ID der ersten Tabelle.
Sobald eine Zeile aus der ersten Tabelle gelöscht wird, sodass die gelöschte ID in der gesamten Tabelle nicht mehr existiert, soll der zugehörige Datensatz in der 2.Tabelle für die entsprechende ID auch gelöscht werden.
Habe das mal mit On DELETE CASCADE probiert nur ist das Problem hier, dass er nach jedem gelöschten Datensatz in der ersten Tabelle den entsprechenden Datensatz in der zweiten Tabelle gelöscht hat, obwohl die ID in der ersten Tabelle noch existieren könnte.
Er sollte also bevor den Datensatz des Fremdschlüssels löscht erst einmal überprüfen, dass es keinen Datensatz mehr mit der ID in der ersten Tabelle gibt und erst dann sollte er in die zweite Tabelle reingehen und löschen.
Ich würde On Delete Cascade also gerne irgendwie erweitern oder existiert für sowetwas schon eine Funktion??
Oder muss ich das mit einerm Trigger machen? Wenn ja wie würde das ungefähr aussehen? Wie müsste ich dann vorgehen?
Hoffe habe mich verständlich ausgedrückt wo das Problem liegt.
liebe Grüße daniel
Comment