如何使用MySQL AFTER UPDATE触发器同步两表的team字段
关于NEW.id的定位能力
可以正确定位。触发器中的NEW关键字指向的是更新操作完成后,tableB被修改行的完整数据,和你本次更新有没有修改id字段没有关系。在你的示例场景中,更新的是tableB中id=3的行,NEW.id的值固定为3,可以正确匹配到tableA中id=3的Mary对应的记录。
现有触发器的正确性验证
你当前编写的触发器逻辑是正确的,完全可以满足你的需求:当你执行UPDATE tableB SET team = 'K' WHERE username = 'Mary';后,触发器会自动触发,同步将tableA中id=3的记录的team字段更新为K。
可选优化方案
如果要避免极端情况下的不同步问题(比如两张表同id对应不同用户名的脏数据场景),可以在更新条件中额外增加用户名校验,逻辑更严谨:
DELIMITER $$ CREATE TRIGGER after_update_tableB AFTER UPDATE ON tableB FOR EACH ROW BEGIN UPDATE tableA SET team = NEW.team WHERE id = NEW.id AND username = NEW.username; END $$ DELIMITER ;
内容的提问来源于stack exchange,提问作者user16803223
相关产品推荐
相关产品推荐

