データベース・トリガの使用上の注意

789 ワード

mysqlでトリガを作成します.次のエラーが発生します.
Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.(この保存された関数またはトリガが既に使用されているため、テーブルt 1の関数またはトリガを更新できません)
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操作することはできません.updateはsetでしか操作できないため、insertとdeleteは2枚目のテーブルでしか必要な目的を実現できない.ネット上では、クエリー文を接続してみて、削除条件に合致するレコードをクエリーして、新しい集合(中間表に相当)として、集合を通じて現在の表のinner join文と削除する構想を実現しているという人がいます.備考:SQLServerでは可能です.