日期:2014-05-17  浏览次数:20570 次

问一个关于触发器的问题,INSTEAD OF delete里面执行delete会再次触发这个触发器吗
INSTEAD OF delete这个触发器里面再执行delete会不会又激活这个触发器?

有个表RelationTree,里面有个ID和ParentID还有一个Mark字段,如果Mark小于100的话,就删除这个表的ParentID为id的内容
如下:

create trigger trig_Delete_RelationTree on RelationTree INSTEAD OF delete
AS 
EGIN
    declare @ID int
    declare @Mark int
    SET NOCOUNT ON;
    IF exists (select count(*) from deleted)
    BEGIN
select @ID = id, @Mark = Mark from deleted
IF(@Mark < 100)--
BEGIN
delete RelationTree where ParentID = @ID;
END
END
END


现在问题来了,不知道这个代码里delete会不会再次触发这个触发器?
同时,我想@Mark >= 100时就直接删除,那么如果还会触发的话不就死循环了,特此求解!
------最佳解决方案--------------------
不会的,你试试不就知道了
------其他解决方案--------------------
不会,不然就死循环了。