我有2个表doc
和link
以及以下结构。
doc
- did
| inlink
| inlinkvalue
| outlink
| outlinkvalue
| pagerank
link
- did
| linkto
did
和linkto
都有doc.did
的外键
我正在尝试创建一个TRIGGER
,当链接添加到link
表时,inlink
,inlinkval
和outlink
会自动更新{ {1}}表。
虽然我可以通过以下doc
更新inlink
和outlink
计数,但无法对TRIGGER
进行sql查询。 inlinkval
值是inlinkval
所有SUM
所有文档(outlinkvalue
)的链接到此文档的did
。我目前的TRIGGER是
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 ;
答案 0 :(得分:1)
对于那些linkto等于插入链接的那些dids,你需要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对于从正在更新的表中进行选择非常繁琐。