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

本表触发器,只能触发一次吗(不能类似“递归”循环吗)?
当修改一条记录,触发修改本表符合条件的记录,直到没有满足条件触发结束。但是结果只触发了一次。触发器不能有类似递归的操作吗?

表结构(单表目录树)
nodeid pid mark
1 null 0
2 1 0
3 2 0
4 3 0
触发器

SQL code
 DECLARE @PID varchar(4)
 SELECT @PID=PID from Inserted;
 update database set Mark=1 where NodeID=@PID


执行
SQL code
update database set Mark=1 where NodeID=4

为什么只触发了一次,记录3和4被修改为mark1呢?
如果全部触发成功,所有的记录mark都应该修改成1啊

------解决方案--------------------
触发器会执行内部符合条件的语句,然后等待下一次触发,而且通过传参数来触发的话是不行的。