'挿入時に'同じ挿入foo
のフィールドの値に基づいて'set_to_1'または'set_to_2'のいずれかにフィールドを設定するトリガーを作成しようとしています。bar
エラーが返されます:
エラー1442(HY000):このストアド関数/トリガーを呼び出したステートメントによって既に使用されているため、ストアド関数/トリガーのテーブル'my_table'を更新できません。
私はこのエラーについて調査しましたが、見つけたすべての解決策はNEW.field_name
、挿入のフィールド名をチェック/更新するときに元のステートメントで指定されていない問題を示しています。私はすでにそれをしていると思います。
私がレビューした他の質問/回答はこれらの2つのリンクにありますが、これらは私が正しく行っていたことを示しているようです。
他のフィールドに基づいてフィールドを計算するためのmysql'afterinsert'トリガー
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;
終わり