0

'挿入時に'同じ挿入fooのフィールドの値に基づいて'set_to_1'または'set_to_2'のいずれかにフィールドを設定するトリガーを作成しようとしています。barエラーが返されます:

エラー1442(HY000):このストアド関数/トリガーを呼び出したステートメントによって既に使用されているため、ストアド関数/トリガーのテーブル'my_table'を更新できません。

私はこのエラーについて調査しましたが、見つけたすべての解決策はNEW.field_name、挿入のフィールド名をチェック/更新するときに元のステートメントで指定されていない問題を示しています。私はすでにそれをしていると思います。

私がレビューした他の質問/回答はこれらの2つのリンクにありますが、これらは私が正しく行っていたことを示しているようです。

他のフィールドに基づいてフィールドを計算するためのmysql'afterinsert'トリガー

http://crazytoon.com/2008/03/03/mysql-error-1442-hy000-cant-update-table-t1-in-stored-functiontrigger-because-it-is-already-used-by-statement- which-invoked-this-stored-functiontrigger /

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    TRIGGER `compare`.`trigger_before_insert` BEFORE INSERT ON `my_database`.`my_table`
FOR EACH ROW BEGIN
IF  NEW.foo IS NULL OR
   NEW.foo LIKE ''
THEN
   IF (NEW.bar LIKE 'test1'
      OR NEW.bar LIKE 'test2')
   THEN
SET NEW.foo = 'set_to_1';
   ELSE
      SET NEW.foo = 'set_to_2';
   END IF;
END IF;

終わり

4

0 に答える 0