MySQL触发器无法更新表-得到错误1442

我有以下触发器:

CREATE TRIGGER sum

AFTER INSERT

ON news

FOR EACH ROW

UPDATE news SET NEW.sum = (NEW.int_views + NEW.ext_views)/NEW.pageviews

它将表格的int_viewsext_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 sum

BEFORE 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

回到顶部