有没有办法只处理更新前MySQL触发器中更改的记录?

发布于 2024-11-02 10:37:42 字数 347 浏览 0 评论 0原文

我需要一个语句,允许在更新表 2 时更改表 1 中的某些字段。

我目前有以下代码:

delimiter //
CREATE TRIGGER check BEFORE UPDATE ON table2
FOR EACH ROW
BEGIN
    IF NEW.Count <> OLD.Count THEN
        ...
    END IF;
END//
delimiter ;

但是,table1非常大并且有很多更新事件,所以我担心这段代码会减慢我的服务器速度。所以我想知道是否有某种解决方案不会查看其中的所有记录,而只查看更新的记录?

I need a statement that allows to change some fields in table1 when table2 was updated.

I have currently the following code:

delimiter //
CREATE TRIGGER check BEFORE UPDATE ON table2
FOR EACH ROW
BEGIN
    IF NEW.Count <> OLD.Count THEN
        ...
    END IF;
END//
delimiter ;

However, table1 is very large and there are a lot of update events, so I'm afraid that this code can slowdown my server. So I want to know if there is some solution that will not look over all records in it, but only those updated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月下凄凉 2024-11-09 10:37:42

触发器不会“查看”所有记录。因为您将触发器声明为FOR EACH ROW,所以触发器中只会处理单行。

当触发器针对每一行执行时,NEWOLD 引用行,这意味着条件 NEW.Count <> OLD.Count 只是比较两个(简单)列值

The trigger will not "look" over all records. Because you declared the trigger as FOR EACH ROW only a single row will be dealt with in the trigger.

As the trigger is execute for each row, NEW and OLD reference a single row as, which means that the condition NEW.Count <> OLD.Count simply compares two (simple) column values

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文