gpt4 book ai didi

mysql - 像 MySQL 触发器但作为一个整体?

转载 作者:可可西里 更新时间:2023-11-01 08:20:49 26 4
gpt4 key购买 nike

CREATE TRIGGER `after_customer_insert`
AFTER INSERT ON `customer`
FOR EACH ROW BEGIN
UPDATE `user`
SET
`customers_count` = `customers_count` + 1
WHERE `id` = NEW.`user_id`;
END$$

不是为 customer 中的每个新行调用 UPDATE user,是否可以将触发器作为“整体”?我的意思是像

CREATE TRIGGER `after_customer_insert`
AFTER INSERT ON `customer`
BEGIN
UPDATE `user`
SET
`customers_count` = (
SELECT COUNT(`id`)
FROM `customer`
WHERE `user_id` = `id`
)
END$$

最佳答案

触发器主要用于执行与单个 上的更改相关的操作,通常更改另一行,正如 Jake 指出的那样。当然,您可以实现逻辑(冗余地)对更新的每一行基本相同的结果集执行相同的操作,但问题是,为什么您不在您的更新之后发出单个 UPDATE 语句原始更新?您可能对此有充分的理由,因此 Jake 提出了有关整体情况的问题。

例如(语法测试,但总体思路成立)

UPDATE u set u.customer_count = x.newcount
from
user u inner join
(
select user, count(*) as newcount
from user group by customer_id
) x

关于mysql - 像 MySQL 触发器但作为一个整体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025401/

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