数据库触发器使用注意

来源:互联网 发布:java 上传文件 编辑:程序博客网 时间:2024/05/17 18:45

在mysql 中创建触发器,如下出现如下的错误:

Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.(无法更新表t1 的函数或者触发器,因为它已经使用了这个保存的函数或者触发器)

delimiter |create trigger TR_XXXXXbefore update on t1 for each row  begin     if new.t='nihaoma?' then               update t1  set new.t = 'ni hao' where t=new.t; //我这里调用了update 然后触发器也是update事件,这样导致了mysql可能会递归调用的意思 end if;end;|

解决方案:
      1. MYSQL中触发器中不能对本表进行 insert ,update ,delete 操作,以免递归循环触发
      2. 对于update 只能用set 进行操作,insert与delete只能借助第二张表才能实现需要的目的
      3.网上有人说:借助连接查询语句试试看,实现思路,先将要符合删除条件的记录查询出来,作为一个新的集合(相当于一张中间表),在通过集合与当前表的 inner join  语句 进行删除。
    备注:在SQLServer 中是可以的。

0 0
原创粉丝点击