数据库触发器使用注意

在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_XXXXX
before update on t1 
for each row  
begin
     if new.t='ni	hao	ma?' 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 中是可以的。

你可能感兴趣的:(数据库)