即使使用NEW,MySQL触发器更新也会失败。指定字段

时间:2013-01-22 13:42:13

标签: mysql triggers

我正在尝试根据同一插页上的字段foo的值,在'插入时将字段bar填充到'set_to_1'或'set_to_2'。我回来了错误:

错误1442(HY000):无法更新存储的函数/触发器中的表'my_table',因为它已被调用此存储函数/触发器的语句使用。

我对此错误进行了一些研究,我发现的所有解决方案都指出了在检查/更新插入字段名称时原始语句未指定NEW.field_name的问题。我相信我已经这样做了。

我回顾的其他问题/答案都在这两个链接上,但这些似乎表明我正确地做到了这一点。

mysql 'after insert' trigger to calculate a field based on other fields

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;

END

0 个答案:

没有答案