Juten Tach :)!
Folgendes Szenario:
-
MS SQL 2005 DB-Server
-
3 Tabellen
-
Tab1 hat Kindertupel in Tab2
-
Tab2 hat Kindertupel in Tab3
-
der Tab1.DeleteTrigger soll beim löschen in Tab1 die Kindertupel in Tab2 löschen
-
der Tab2.DeleteTrigger soll beim löschen in Tab2 die Kindertupel in Tab3 löschen
Beispiel:
Tab1 hat ein Tupel mit 2 Kindertupeln in Tab2.
Die beiden Kindertupel haben widerrum 2 Kindertupel in Tab3.
Lösch ich also das Tupel in Tab1 sollten ja alle Tabellen leer sein.
Jedoch sind nur Tab1 und Tab2 leer. In Tab3 wurden nur die Kindertupel des ersten in Tab2 zu löschenden Tupel gelöscht. Ich hoffe man kann mir folgen ;).
Irgendwie wird der Trigger von Tab2 scheinbar nur einmal ausgelöst. Nur warum?
Hier noch kurz die beiden Trigger:
--#################################
ALTER TRIGGER Tab1_Delete
ON dbo.Tab1
FOR DELETE
AS
DECLARE @mObjektID int,
@mKlassenID smallint
SELECT @mObjektID = ObjektID FROM deleted
SELECT @mKlassenID = KlassenID FROM deleted
DELETE FROM Tab2
WHERE Tab2.ParentID = @mObjektID
AND Tab2.ParentCL = @mKlassenID
--############################################
ALTER TRIGGER Tab2_Delete
ON dbo.Tab2
FOR DELETE
AS
DECLARE @mObjektID int,
@mKlassenID smallint
SELECT @mObjektID = ObjektID FROM deleted
SELECT @mKlassenID = KlassenID FROM deleted
DELETE FROM Tab3
WHERE Tab3.ParentID = @mObjektID
AND Tab3.ParentCL = @mKlassenID
Im Prinzip ja 2mal das gleiche.
Hat jemand ne Ahnung, warum der 2. Trigger nicht funzt, bzw. evtl. nur einmal ausglöst wird?
Gruß, Jan