MySQL触发器无法更新表-得到错误1442
我有以下触发器:
CREATE TRIGGER sumAFTER INSERT
ON news
FOR EACH ROW
UPDATE news SET NEW.sum = (NEW.int_views + NEW.ext_views)/NEW.pageviews
它将表格的int_views
和ext_views
列相加,然后将它们除以总的综合浏览量。
每当我尝试向新闻添加新行时,都会出现以下错误:
ERROR 1442 (HY000) at line 3: Can't update table 'news' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
触发对我来说似乎很简单。触发器无法运行是有原因的吗?
回答:
该 是,你正在运行UPDATE
一个内部(所有行)INSERT
触发-无论是修改表,这是不允许的。
就是说,如果我正确地想到了触发器的意图,则您不想更新 行,而只希望更新新插入的行。您可以轻松实现
CREATE TRIGGER sumBEFORE INSERT
ON news
FOR EACH ROW
SET NEW.sum = (NEW.int_views + NEW.ext_views)/NEW.pageviews
请注意,这是一个BEFORE INSERT
触发器,因为您想在将行写入表之前对其进行更改。
以上是 MySQL触发器无法更新表-得到错误1442 的全部内容, 来源链接: utcz.com/qa/429177.html