[英]MySQL TRIGGER syntax, IF THEN INSERT
I want to modify a working trigger that looks like this: 我想修改一个看起来像这样的工作触发器:
CREATE TRIGGER j_update BEFORE UPDATE ON d
FOR EACH ROW
INSERT INTO j (
stampOld, stampNew
)
VALUES (
OLD.stamp, NEW.stamp
);
to execute only on the success of an IF statement. 仅在IF语句成功时执行。 I can't get the right syntax for this modification.
我无法为此修改获得正确的语法。
I'm trying to achieve the following: 我正在努力实现以下目标:
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;
Result: ERROR 1064: Check for right syntax near '' at line 21 结果:错误1064:在第21行的“”附近检查正确的语法
Things I've tried: 我尝试过的事情:
IF ... END IF;
IF ... END IF;
in BEGIN .. END;
BEGIN .. END;
I'm using MySQL 5.0.95 for RHEL. 我正在为RHEL使用MySQL 5.0.95。
Any help is greatly appreciated. 任何帮助是极大的赞赏。
Try this 尝试这个
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 ;
Here is one I just tried on my mysql but its for update almost same with your logic 这是我刚在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 ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.