日期:2014-05-18  浏览次数:20459 次

如下的一个触发器,请教一个问题
CREATE         trigger   healMana   on   Player
for   update
as
if   update(MP)   and   exists(select   1   from   inserted,deleted   where   inserted.ID=deleted.ID   and   isnull(inserted.MP,0) <> isnull(deleted.MP,0))
begin
update   Player
set   MP=inserted.MP+100
from   Player,inserted,deleted
where   Player.ID=inserted.ID   and   inserted.ID=deleted.ID   and   isnull(inserted.MP,0) <> isnull(deleted.MP,0)
end

这是个前几天我提出的问题,已经得到了解决,现有一后续问题,期望帮助
本意是当更新表的一列时,将更新后的值加100再更新回去,如此将形成一个更新后又更新的无限死循环,现在问题来了,如何使触发器本身最后自带的更新动作不会触发其if   update(MP)条件呢?

------解决方案--------------------
另建一表
------解决方案--------------------
我觉得是你本身的逻辑有问题(为什么需要这样一直自加呢?)

可以设定一个值,比如MP到1000或到10000时就不更新.