gpt4 book ai didi

MySQL触发器INSERT IGNORE INTO SELECT使用的parent_table的更新计数器

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

我目前开始在我的数据库结构中使用触发器。我必须有 table - 让我们称他们为 parent 和 child 。向 cild 表插入数据后调用触发器。插入语句是

INSERT IGNORE INTO child (parent_id)
SELECT
id
FROM parent
WHERE somecondition = 1

子表的after-insert触发器中的语句为:

UPDATE parent SET derivate_count = derivate_count + 1;

父表没有更新或其他触发器,我收到错误:SQL Fehler (1442):无法更新存储函数/触发器中的表“父级”,因为它已被调用此存储函数/触发器的语句使用。

我知道如果我在父表上强制执行相同的事件,是否会发生此错误 - 如何解决此问题?

亲切的问候,

多米尼克

最佳答案

使用OLD.fieldName和NEW.fieldName分别引用更新前后的值...

delimiter |

CREATE TRIGGER testref AFTER UPDATE ON parent
FOR EACH ROW BEGIN
declare count_ integer;
select count(*) into count_ from child where parent_id = NEW.id;
if (if count_ = 0)
then
INSERT INTO child ( parent_id ) values (NEW.id );
delete from child where parent_id = OLD.id;
... more code ...
else
... more code ....
... else is optional, but an end to end the if is not....
end if;
END;
|

delimiter ;

关于MySQL触发器INSERT IGNORE INTO SELECT使用的parent_table的更新计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464481/

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