MySQL - 根据更新其他表列值触发更新列值

Posted

技术标签:

【中文标题】MySQL - 根据更新其他表列值触发更新列值【英文标题】:MySQL - Trigger to update a column value based on update other table column value 【发布时间】:2020-04-24 23:19:30 【问题描述】:

每当 TABLE_A 在同一 ID 的“已付款”列上更新时,我都需要更新该特定 ID 中“已付款”列上的 TABLE_B。

我正在尝试使用触发器考虑一些解决方案,但不知道如何。

【问题讨论】:

这听起来像是冗余/糟糕的设计 【参考方案1】:

你似乎想要这样的东西:

delimiter //

create trigger mytrigger
after update on table_a
for each row
begin
    if not (new.paid <=> old.paid) then
        update table_b set paid = new.paid where id = new.id;
    end if;
end;
//

delimiter ;

触发器在table_b 上的每个update 之后触发。 if 条件检查列 paid 的值是否发生变化,如果发生变化,则将 table_b 中的列 paid 更新为 idid 匹配的行上的相同值更新了table_a 中的行。

【讨论】:

没错。我之前做过这样的事情,我认为这是正确的。但是,我不断收到“错误代码:2013 在查询期间丢失与 mysql 服务器的连接”。我的 Table_B 有 35000 行,我的 Table_A 每天更新 2000 次。这个解决方案会不会被占用? 针对 35000 行的表每天执行 2000 次应该不是问题。您可以考虑在两个表上的id 上建立索引以加快更新速度。

以上是关于MySQL - 根据更新其他表列值触发更新列值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据联接更新 Redshift 中的表列值?

使用另一个列值更新 sql db 表列

在 BigQuery SQL 中:在满足日期约束时检查和更新表列值

更新之前的Oracle SQL触发器,用于设置来自其他实体的列值

MYSQL 根据表 2 的列值更新表 1 列

MySQL:通过其他表中的值更新列值