データベース・トリガの使用上の注意
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の関数またはトリガを更新できません)
ソリューション:1.MYSQLのフリップフロップでは、再帰的なループがトリガーされないように、このテーブルをinsert,update,delete操作することはできません.updateはsetでしか操作できないため、insertとdeleteは2枚目のテーブルでしか必要な目的を実現できない.ネット上では、クエリー文を接続してみて、削除条件に合致するレコードをクエリーして、新しい集合(中間表に相当)として、集合を通じて現在の表のinner join文と削除する構想を実現しているという人がいます.備考:SQLServerでは可能です.
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では可能です.