MySQL如何更新主键的同时更新外键?

A表主键是idB表里面有一个字段是a_id指向A.id,现在A有一条记录

id
123

B有一条记录

id a_id
999 123

比如我想更新A.id = 333,如何让B中的a_id = 123同步更新成333

阅读 8.2k
1 个回答

实际情况中一般情况下是不允许修改id的,实在需要修改的话需要用两条update语句,并且临时关闭外键约束

SET FOREIGN_KEY_CHECKS = 0;
update A as a set a.id = 333 where a.id = 123;
update B as b set b.a_id = 333 where b.a_id = 123;
SET FOREIGN_KEY_CHECKS = 1;

另外一种方法,删除之前的外键约束,添加新的外键约束时使用ON UPDATE CASCADE可以实现自动更新外键字段。

ALTER TABLE B ADD FOREIGN KEY (a_id) REFERENCES A(id) ON UPDATE CASCADE;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题