[sybase] kaskadierenden lösch trigger

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?
 
Hi,
Lös doch die angelegenheit per Stored Procedure.
Oder du änderst deine Constraints so, dass kaskadierend gelöscht wird. dann hast du das ganze Problem erst gar nicht.

mfg
 

Neue Beiträge

Zurück