sql server - Why does my trigger not fire? -
i have following table:
if object_id(n'dbo.node') 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, );
now, because sql server complains when try set foreign key cascaded delete, have created trigger work:
create trigger node_delete on node delete begin delete node parentid in (select id deleted) end
now here's sample data set:
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
now let's run bit of sql:
delete node id=520
the node should delete, along child node. why error?
msg 547, level 16, state 0, line 1 delete statement conflicted same table reference constraint "fk__node__parentid__117f9d94". conflict occurred in database "mydb", table "dbo.node", column 'parentid'. statement has been terminated.
the foreign key blocks initial delete, , trigger never fires. try instead of trigger deletes furthest decedent on up.
Comments
Post a Comment