V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chensong004
V2EX  ›  问与答

求教一个 mysql 跨表同步问题

  •  
  •   chensong004 · 2020-09-03 21:00:53 +08:00 · 934 次点击
    这是一个创建于 1569 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不是程序员,遇到个问题不知道该怎么解决,请教各位大神帮忙解决。
    背景:使用一个 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 ,会造成循环调用,报错。
    2 条回复    2020-09-04 14:47:13 +08:00
    ll1615
        1
    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
        2
    chensong004  
    OP
       2020-09-04 14:47:13 +08:00
    @ll1615 感谢大佬!之前尝试过直接 set new.name=(select……)这种形式会报错,原来用变量中转下就可以了,谢谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:02 · PVG 04:02 · LAX 12:02 · JFK 15:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.