我想修改一个如下所示的工作触发器:
CREATE TRIGGER j_update BEFORE UPDATE ON d
FOR EACH ROW
INSERT INTO j (
stampOld, stampNew
)
VALUES (
OLD.stamp, NEW.stamp
);
仅在IF语句成功时执行。我无法为此修改获得正确的语法。
我试图实现以下目标:
CREATE TRIGGER j_update BEFORE UPDATE ON d
FOR EACH ROW
IF (1=1) THEN
INSERT INTO d (
stampOld, stampNew
)
VALUES (
OLD.stamp, NEW.stamp
); /* <--- LINE 21 */
END IF;
结果:错误1064:检查&#39;&#39;附近的正确语法在第21行
我尝试的事情:
IF ... END IF;
包裹在BEGIN .. END;
我使用MySQL 5.0.95进行RHEL。
非常感谢任何帮助。
答案 0 :(得分:1)
试试这个
delimiter //
CREATE TRIGGER j_update BEFORE UPDATE ON d
FOR EACH ROW
BEGIN
IF 1=1 THEN
INSERT INTO d (
stampOld, stampNew
)
VALUES (
OLD.stamp, NEW.stamp
);
END IF;
END; //
delimiter ;
这是我刚刚在我的mysql上尝试的一个,但它的更新几乎与你的逻辑相同
mysql> delimiter //
mysql> create trigger tbl_two_ins
-> after insert on tabletwo
-> for each row
-> begin
-> if 1=1 then
-> update tableone t1 set t1.tb2_id = new.tab2_id where t1.tb1_id = new.tb1_id ;
-> end if ;
-> end ; //
Query OK, 0 rows affected (0.56 sec)
mysql> delimiter ;