【发布时间】:2017-01-05 18:30:15
【问题描述】:
我有三个表:contact、account 和 account_contact。 account_contact 具有联系人和帐户之间的关系。
在 account 表中,我有字段 account_contacts,其中我有每个帐户的联系人计数。我可以运行一个更新此值的 sql,但我想在每次创建或更新联系人表时更新它。
这是更新sql:
update account a
left join (
select ac.account_id as a_id, count(c.id) as contacts
from account_contact ac
inner join contact c
on ac.contact_id = c.id
where c.deleted = 0
group by ac.account_id
) as n
ON a.id = n.a_id
SET a.account_contacts = n.contacts
这是我尝试过的代码:
CREATE TRIGGER `contact_new` AFTER INSERT ON `contact`
FOR EACH ROW update account a set a.account_contacts = a.account_contacts + 1
where a.id = (select ac.account_id from account_contact ac where ac.contact_id = NEW.id)
我在stackoverflow中找到的关于触发器的答案只有两个表。
【问题讨论】:
-
到底怎么不行,IE如果有错误信息,是什么?
-
@Jake:它不起作用,因为我向帐户添加了新联系人并且联系人数量 account.account_contacts 没有改变。
-
@user366329:我阅读网上的内容并在互联网上搜索答案。我只是不明白我必须在这里做什么,否则我不会问。更基本的事情在这里问和回答,没有讽刺。
标签: mysql join triggers group-by