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

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

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

【问题讨论】:

  • 这听起来像是冗余/糟糕的设计

标签: mysql sql sql-update database-trigger


【解决方案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 上建立索引以加快更新速度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2022-08-18
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 2021-07-15
相关资源
最近更新 更多