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
更新为 id
与 id
匹配的行上的相同值更新了table_a
中的行。
【讨论】:
没错。我之前做过这样的事情,我认为这是正确的。但是,我不断收到“错误代码:2013 在查询期间丢失与 mysql 服务器的连接”。我的 Table_B 有 35000 行,我的 Table_A 每天更新 2000 次。这个解决方案会不会被占用? 针对 35000 行的表每天执行 2000 次应该不是问题。您可以考虑在两个表上的id
上建立索引以加快更新速度。以上是关于MySQL - 根据更新其他表列值触发更新列值的主要内容,如果未能解决你的问题,请参考以下文章
在 BigQuery SQL 中:在满足日期约束时检查和更新表列值