gpt4 book ai didi

Mysql触发器涉及多表更新表

转载 作者:行者123 更新时间:2023-11-29 11:52:40 26 4
gpt4 key购买 nike

我有 2 个具有以下结构的表 doclink

doc - did|inlink|inlinkvalue|outlink|outlinkvalue|pagerank

link - did|linkto didlinkto 都有外键到doc.did

我正在尝试创建一个TRIGGER,当链接添加到link表时,然后inlinkinlinkvaloutlinkdoc 表中自动更新。

虽然我能够通过以下 TRIGGER 更新 inlinkoutlink 计数,但无法对 进行 sql 查询inlinkvalinlinkval 值是链接到该文档的所有文档(did) 的所有outlinkvalueSUM。我现在的触发器是

DELIMITER $$
CREATE
TRIGGER T_after_link AFTER INSERT
ON link
FOR EACH ROW
BEGIN
UPDATE doc SET outlink=outlink+1 WHERE doc.did=NEW.did;
UPDATE doc SET inlink=inlink+1 WHERE doc.did=NEW.linkto;
END $$
DELIMITER ;

最佳答案

您需要所有这些 linkto 等于插入的 linkto 的 outlinkvalue 的总和:

select sum(outlinkvalue) from link inner join doc on link.did=doc.did where link.linkto=NEW.linkto;

将上述查询放入更新中:

update doc set inlinkvalue=(select outlinksum from (select sum(outlinkvalue) as outlinksum from link inner join doc on link.did=doc.did where link.linkto=NEW.linkto) t)

我使用了额外的子查询,因为 mysql 对于从正在更新的表中进行选择非常挑剔。

关于Mysql触发器涉及多表更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773428/

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