簡體   English   中英

MySQL TRIGGER語法,如果可以插入

[英]MySQL TRIGGER syntax, IF THEN INSERT

我想修改一個看起來像這樣的工作觸發器:

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:在第21行的“”附近檢查正確的語法

我嘗試過的事情:

  • 包裝IF ... END IF; BEGIN .. END;
  • 將分隔符切換為$$

我正在為RHEL使用MySQL 5.0.95。

任何幫助是極大的贊賞。

嘗試這個

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 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM