MySQL有办法批量更新所有表的同一名称的字段吗?

假如现在有如下所示的表结构。

clipboard.png

其中student.person_idteacher.person_id都是逻辑外键,关联到person.id
student.person_nameteacher.person_name都是从person.name冗余过来的,
(考虑到查询学生和老师的时候几乎总是需要查出他们名字,
person.name这个字段是不怎么改动的,
所以studentperson里面有适当的冗余)

现在我希望每次更新student表的时候,顺便把student.person_nameteacher.person_name也更新了,
请问有办法吗?有的话,这个SQL文的思路大概是什么样的?

阅读 4.8k
3 个回答
update student inner join teacher on student.person_id=teacher.person_id set student.person_name='Test',teacher.person_name='Test' where student.person_id=1;

测试可以成功,**提醒下update后面要跟where,否则全部更新了**

可以使用触发器来实现

没理解问题的难点在哪,我理解就是在更新person表的时候,同时执行下面两个sql语句:

update student
set person_name = :person_name
where person_id = :person_id;

update teacher
set person_name = :person_name
where person_id = :person_id;

如果不想在应用端写代码,就只能在person表上加触发器了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题