求教一个 mysql 跨表同步问题

2020-09-03 21:00:53 +08:00
 chensong004
不是程序员,遇到个问题不知道该怎么解决,请教各位大神帮忙解决。
背景:使用一个 OA 系统,可以自定义模块,只是简单增删改查,业务代码不好二次开发。
问题:有两个数据表表 A 和表 B,表 A 为姓名,学号;表 B 为姓名,学号,成绩。
需求:表 B 插入一行数据(学号,成绩),自动根据表 A 对应的姓名将表 B 中的姓名填写。业务代码没办法修改,需要在数据库中实现。
尝试:试着用触发器 after insert 处理,update A,B set B.name =A.name where B.cardid = A.cardid and B.id = new.id ,会造成循环调用,报错。
938 次点击
所在节点    问与答
2 条回复
ll1615
2020-09-04 10:41:23 +08:00
DELIMITER $$
CREATE TRIGGER `test`.`tableb_BEFORE_INSERT` BEFORE INSERT ON `tableb` FOR EACH ROW
BEGIN
SET @name = (SELECT name FROM tablea WHERE NEW.aid = tablea.id);
SET NEW.name = @name;
END$$
DELIMITER ;
chensong004
2020-09-04 14:47:13 +08:00
@ll1615 感谢大佬!之前尝试过直接 set new.name=(select……)这种形式会报错,原来用变量中转下就可以了,谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/704003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX