JCB: M$SQL2005: Delete-Trigger löscht nicht alle Tupel

Beitrag lesen

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