我正在开发的程序后端设计很差,基本上需要两个不同的表来保存完全相同的信息。我正在尝试编写一个触发器,它将使用表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行
答案 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,应该使用
执行P.S。 @Johan所说的显然也是正确的
p.s.2现在我看到另一个错误: 你需要在drop和create语句之间使用分隔符