serethos_0
Grünschnabel
Ich habe drei Tabellen, die aufeinander referenzieren:
Ein Kunde ist eine Person und hat diverse Bestellungen. Es soll nun möglich sein, einen Kunden kaskadierend zu löschen, also ihn als Person samt seiner Bestellungen.
Zunächst habe ich folgendes geschrieben:
create trigger entferneKunde on Kunde for delete
as
if (@@rowcount = 0)
return
delete Bestellungen from Bestellungen, deleted
where Bestellungen.KundeID = deleted.Id
delete Person from Person, deleted
where Person.Id = deleted.Id
return
Dabei bekomme ich aber noch immer die Fehlermeldung, es sei aufgrund der Fremdschlüsselbeziehung zu Bestellung nicht möglich, den Kunden zu löschen.
Nun ist mir in den Sinn gekommen, dass Sybase ja nur After-Trigger unterstützt.
Das bedeutet, die Constraint-Verletzung wird erst begangen und dann würde der Trigger versuchen, den Rest zu löschen (was er nicht tut, da 'deleted' leer ist).
Wie löse ich das Problem?
Ein Kunde ist eine Person und hat diverse Bestellungen. Es soll nun möglich sein, einen Kunden kaskadierend zu löschen, also ihn als Person samt seiner Bestellungen.
Zunächst habe ich folgendes geschrieben:
create trigger entferneKunde on Kunde for delete
as
if (@@rowcount = 0)
return
delete Bestellungen from Bestellungen, deleted
where Bestellungen.KundeID = deleted.Id
delete Person from Person, deleted
where Person.Id = deleted.Id
return
Dabei bekomme ich aber noch immer die Fehlermeldung, es sei aufgrund der Fremdschlüsselbeziehung zu Bestellung nicht möglich, den Kunden zu löschen.
Nun ist mir in den Sinn gekommen, dass Sybase ja nur After-Trigger unterstützt.
Das bedeutet, die Constraint-Verletzung wird erst begangen und dann würde der Trigger versuchen, den Rest zu löschen (was er nicht tut, da 'deleted' leer ist).
Wie löse ich das Problem?