Hallo Zusammen,
ich habe 2 Tabellen. Eine Haupttabelle, wo der Benutzer die Einträge (objekte) löschen darf, und eine Tabelle (hierarchy) um die Verbindungen zwischen den Objekten zu speichern.
Wenn der Benutzer aus der eigentlichen Tabelle einen Eintrag löscht, möchte ich mit Hilfe von einem Trigger aus der „hierarchy“ Tabelle die entsprechenden Einträge löschen.
Ich will aber die Einträge nur löschen wenn ein Eintrag in „Parent_id“ nur einmal vorkommt. Zum Beispiel ich darf 2 nicht löschen weil 2 mehrmals in parent_id vorkommt.
Ich darf aber die 5 löschen. Objekt 5 kommt einmal in der parent_id vor. Dann lösche ich alle Einträge, die in der child_id 5 haben. Das heißt alle Verbindungen von Objekt 5 wird gelöscht.
Tabelle: hierarchy
Die folgende abfrage ist in MySQL nicht möglich da ich innerhalb einem Delete keine Select aus der gleiche Tabelle machen darf.
Deswegen habe ich den Folgenden Trigger implementiert. Ich habe eine Help Tabelle erstellt nur um das Ergebniszahl zu speichern.
Gibt es eine Lösung diese Abfrage ohne ein help table zu machen?
Danke im Voraus
ich habe 2 Tabellen. Eine Haupttabelle, wo der Benutzer die Einträge (objekte) löschen darf, und eine Tabelle (hierarchy) um die Verbindungen zwischen den Objekten zu speichern.
Wenn der Benutzer aus der eigentlichen Tabelle einen Eintrag löscht, möchte ich mit Hilfe von einem Trigger aus der „hierarchy“ Tabelle die entsprechenden Einträge löschen.
Ich will aber die Einträge nur löschen wenn ein Eintrag in „Parent_id“ nur einmal vorkommt. Zum Beispiel ich darf 2 nicht löschen weil 2 mehrmals in parent_id vorkommt.
Ich darf aber die 5 löschen. Objekt 5 kommt einmal in der parent_id vor. Dann lösche ich alle Einträge, die in der child_id 5 haben. Das heißt alle Verbindungen von Objekt 5 wird gelöscht.
Tabelle: hierarchy
Die folgende abfrage ist in MySQL nicht möglich da ich innerhalb einem Delete keine Select aus der gleiche Tabelle machen darf.
Code:
BEGIN
DELETEFROMhierarchy
WHEREhierarchy.child_idIN(
SELECTparent_id
FROM`hierarchy`
WHEREparent_id=old.id
GROUPBYparent_id
HAVINGcount(*)=1);
END
Deswegen habe ich den Folgenden Trigger implementiert. Ich habe eine Help Tabelle erstellt nur um das Ergebniszahl zu speichern.
Code:
BEGIN
DELETEFROMhlp_tbl;
INSERTINTOhlp_tbl
(SELECTparent_id
FROM`hierarchy`
WHEREparent_id=old.id
GROUPBYparent_id
HAVINGcount(*)=1);
DELETEFROMhierarchy
WHEREhierarchy.child_idIN(
SELECTid
FROMhlp_tbl);
END
Gibt es eine Lösung diese Abfrage ohne ein help table zu machen?
Danke im Voraus
Anhänge
Zuletzt bearbeitet: