触发器代码如下:
create trigger trg_user_update
after update
on user for each row
begin
if new.num<0 then
set new.overdraft=new.overdraft-new.num;
set new.num=0;
end if;
end
如果num小于0,将其设置为0,并将overdraft的值进行处理现在的情况时:
1、如果更新之前num的值大于0,这个触发器的结果是正确的
2、如果更新前num值为0,触发器执行结果不正确 overdraft的值没有变化大家帮看看什么原因 分析下 谢谢

解决方案 »

  1.   

    补充说明: 如果我把set new.num=0;去掉 即使更新之前num的值为0 也可以修改overdraft的值
      

  2.   

    再补充:
    粘贴的时候 贴错了代码应该是before update
      

  3.   

    create trigger trg_user_update
    after update改成BEFORE UPDATE
      

  4.   

    本来就是before  粘贴的时候贴错了 呵呵
      

  5.   

    如果我把set new.num=0;
    去掉就没问题了奇怪
      

  6.   


    if new.num<0 then
    set new.overdraft=new.overdraft-new.num;如果new.num=0,new.overdraft这个值不是会变化的。另外new.num<0看出,只对小于进行了处理,等于和大于的情况下,都不会进行处理。