更新已更新的表时,MySQL触发器错误的解决方法

时间:2012-07-29 19:15:52

标签: mysql

我创建了一个触发器,只要存储新条目就会抛出错误。这是触发器:

CREATE TRIGGER `htmlid` BEFORE INSERT ON `makelist_food`
FOR EACH ROW BEGIN
IF (NEW.html_id IS NULL) THEN
  INSERT INTO makelist_food SET html_id = CONCAT('f', NEW.id);
END IF;
END

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

有很多关于此错误的讨论,但我没有找到任何解决方案或解决方法。以下是2010 stackoverflow.com/questions/1582683/mysql-trigger-stored-trigger-is-already-used-by-statement-which-invoked-stored-t的答案,其中指出MySQL中根本不支持这一点。

由于这是超过2年的答案,我想知道是否SO知道这个问题的一些解决方法。我找不到任何。

1 个答案:

答案 0 :(得分:1)

你是不是意味着

IF (NEW.html_id IS NULL) THEN
    SET NEW.html_id = CONCAT('f', NEW.id);
END IF;