使用更新触发器更新另一个表

时间:2011-09-13 15:53:18

标签: mysql triggers

我正在开发的程序后端设计很差,基本上需要两个不同的表来保存完全相同的信息。我正在尝试编写一个触发器,它将使用表A中刚刚更新的相同信息更新表B.哦,这是使用MYSQL数据库 我不确定我是否只是出现语法错误或者我是否缺少概念,任何帮助都会非常感激...这就是我现在所拥有的

DELIMITER $$         
DROP TRIGGER IF EXISTS after_update_A;

CREATE TRIGGER `after_update_A` 

    AFTER UPDATE ON `A`  FOR EACH ROW
    BEGIN
        UPDATE TABLE B
        SET  username = NEW.username
           , password = NEW.password
           , email = NEW.email
        WHERE id = NEW.id
    END

    $$
DELIMITER ;

我得到的错误都与此类似...... 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'= users.username附近使用正确的语法   ,B.email = users.email D'在第4行

2 个答案:

答案 0 :(得分:2)

您需要使用;关闭触发器内的每个语句,并且我的意思是每个

CREATE TRIGGER `after_update_A` AFTER UPDATE ON `A` FOR EACH ROW
BEGIN
    UPDATE TABLE B
    SET  username = NEW.username
       , password = NEW.password
       , email = NEW.email
    WHERE id = NEW.id;    //<<-----------
END $$

答案 1 :(得分:0)

我觉得你正在编译.sql为.sh

触发器是.sql,应该使用

执行

mysql-batch-commands.html

P.S。 @Johan所说的显然也是正确的

p.s.2现在我看到另一个错误: 你需要在drop和create语句之间使用分隔符