KeinNameFrei
Enthusiast
Ich hab folgendes Problem... (MS-SQL)
Ich habe zwei verknüpfte Tabellen. Ich möchte einen Trigger schreiben, der es mir erlaubt, einen Eintrag in Tabelle 1 zu löschen. Allerdings müssen ja erst alle Einträge in Tabelle 2, die zu dem Eintrag in Tabelle 1 gehören, gelöscht werden, bevor der Eintrag in Tabelle 1 gelöscht werden kann (wie zu erwarten).
Soweit, so gut... ich hab einen INSTEAD OF DELETE Trigger verwendet, und der funktioniert auch. Tut genau das was er soll. Allerdings... nur wenn er für sich alleine existiert.
Jetzt gibt es in Tabelle 2 nämlich auch noch einen FOR DELETE Trigger, der Daten in Tabelle 1 anpassen soll, wenn in Tabelle 2 Einträge gelöscht werden. Sobald dieser Trigger existiert, funktioniert der zwar wunderbar, aber mein Trigger in Tabelle 1 wirft kryptsiche Fehler ("Die Unterabfrage gab mehr als einen Wert zurück").
Irgendwie hab ich das Gefühl, dass hier ein Trigger den anderen auszulösen versucht. Kann das passieren? Wie muss ich denn meine Trigger anlegen, damit ich in dieses Problem nicht reinlaufe?
Ich habe zwei verknüpfte Tabellen. Ich möchte einen Trigger schreiben, der es mir erlaubt, einen Eintrag in Tabelle 1 zu löschen. Allerdings müssen ja erst alle Einträge in Tabelle 2, die zu dem Eintrag in Tabelle 1 gehören, gelöscht werden, bevor der Eintrag in Tabelle 1 gelöscht werden kann (wie zu erwarten).
Soweit, so gut... ich hab einen INSTEAD OF DELETE Trigger verwendet, und der funktioniert auch. Tut genau das was er soll. Allerdings... nur wenn er für sich alleine existiert.
Jetzt gibt es in Tabelle 2 nämlich auch noch einen FOR DELETE Trigger, der Daten in Tabelle 1 anpassen soll, wenn in Tabelle 2 Einträge gelöscht werden. Sobald dieser Trigger existiert, funktioniert der zwar wunderbar, aber mein Trigger in Tabelle 1 wirft kryptsiche Fehler ("Die Unterabfrage gab mehr als einen Wert zurück").
Irgendwie hab ich das Gefühl, dass hier ein Trigger den anderen auszulösen versucht. Kann das passieren? Wie muss ich denn meine Trigger anlegen, damit ich in dieses Problem nicht reinlaufe?