Pourquoi mon triggersur ne se triggers-t-il pas?

J'ai le tableau suivant:

if object_id(N'dbo.Node') is null create table dbo.Node ( ID bigint identity primary key, ParentID bigint null foreign key references Node(ID) on delete no action, DateCreated datetime not null, LastUpdated datetime not null, [Name] nvarchar(500) not null, ); 

Maintenant, parce que SQL Server se plaint lorsque j'essaie de définir la key étrangère comme une suppression en cascade, j'ai créé un triggersur pour faire le travail:

 create sortinggger Node_Delete on Node for delete as begin delete from Node where ParentID in (select id from deleted) end 

Maintenant, voici un exemple de jeu de données:

 ID ParentID DateCreated LastUpdated Name 520 1 2010-01-12 02:26:26.890 2010-01-12 02:26:26.890 Test 1 523 520 2010-01-12 02:32:44.777 2010-01-12 02:32:44.777 Test 2 

Maintenant, courons ce peu de SQL:

 delete from Node where ID=520 

Le noeud doit être supprimé avec le noeud enfant. Alors, pourquoi ai-je cette erreur?

 Msg 547, Level 16, State 0, Line 1 The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK__Node__ParentID__117F9D94". The conflict occurred in database "mydb", table "dbo.Node", column 'ParentID'. The statement has been terminated. 

La key étrangère bloque la suppression initiale et le triggersur ne se triggers jamais. Essayez un triggersur INSTEAD OF qui supprime de la décédé la plus éloignée.