MySQL TRIGGER语法,如果那么INSERT

时间:2014-05-15 16:31:43

标签: mysql

我想修改一个如下所示的工作触发器:

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。

非常感谢任何帮助。

1 个答案:

答案 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 ;