gpt4 book ai didi

MySQL 触发器不适用于表插入

转载 作者:行者123 更新时间:2023-11-30 22:09:10 25 4
gpt4 key购买 nike

也许我只是太笨了,但希望有人能提供帮助。我正在尝试为 DateCreated 列添加触发器,该触发器在添加行时触发。当我尝试添加时,我得到了

Can't update table 'products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger

我从this answer意识到这是因为由于递归循环,MySQL 不允许我在插入后触发,但我的触发器在更新之前有更新,我正在使用新的。我错过了什么触发器?另外,如果我想做一个 DateModified,我必须改变什么?

触发器

CREATE TRIGGER `DateCreatedTriggerTS` BEFORE INSERT ON  `products` 
FOR EACH ROW UPDATE products SET DateEntered = NOW( ) WHERE ProductID = NEW.ProductID

最佳答案

ProductID 是这个产品表中的唯一键吗?如果是这样,您的 UPDATE 基本上只更新生成触发器的行,对吧?

所以这样做更简单:

CREATE TRIGGER `DateCreatedTriggerTS` BEFORE INSERT ON  `products` 
FOR EACH ROW SET NEW.DateEntered = NOW( );

这将仅在生成触发器的行中更改 DateEntered 列的值。

关于MySQL 触发器不适用于表插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com