2013-07-10 46 views
1

我想從php頁面獲取一些值並在mysql數據庫中執行觸發器。這是如下:使用觸發器在表上執行插入或更新

DELIMITER $$ 

DROP TRIGGER /*!50032 IF EXISTS */ `test`.`MysqlTrigger`$$ 

CREATE 
    /*!50017 DEFINER = 'root'@'localhost' */ 
    TRIGGER `MysqlTrigger` AFTER INSERT OR UPDATE ON `table2` 
    FOR EACH ROW BEGIN 
    IF(NEW .flag=0) THEN 
    INSERT INTO temp(sent,pcount,ncount) VALUES (NEW.sent,NEW.pcount,NEW.ncount); 
    ELSE 
     UPDATE temp SET pcount=NEW.pcount AND ncount=NEW.ncount WHERE id = NEW.id; 
    END IF; 
    END; 
$$ 

DELIMITER ; 

其中給出錯誤:

error Code : 1064 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or update ON `table2` 
    FOR EACH ROW BEGIN 
    if(NEW .flag=0) then 
    INSERT INTO' at line 3 

我試圖改變= =有:但錯誤依然存在。任何想法都有可能嗎?

回答

0

我算了。語法有問題。這裏是一個在不同的表和更新插頁上同一個表同一時刻進行更新插入,但正確的使用,如果其他人:

DELIMITER $$ 

DROP TRIGGER /*!50032 IF EXISTS */ `test`.`MysqlTrigger2`$$ 

CREATE 
    /*!50017 DEFINER = 'root'@'localhost' */ 
    TRIGGER `MysqlTrigger2` AFTER INSERT ON `table2` 
    FOR EACH ROW BEGIN 
    IF 'flag'=1 THEN 
     UPDATE record SET sent=NEW.sent WHERE id=NEW.id; 
    ELSE 
     INSERT INTO record VALUES (id,NEW.sent); 
     INSERT INTO temp VALUES() 
    END IF; 
    END; 
$$ 

DELIMITER ; 
1

您無法同時爲更新插入定義觸發器。你必須定義2個觸發器:

CREATE TRIGGER `Mysql_insert_Trigger` AFTER INSERT ON `table2` ... 
CREATE TRIGGER `Mysql_update_Trigger` AFTER UPDATE ON `table2` ... 
+0

我能做到這一點的更新和插入都是用的if else,這樣他們就不會被執行在同一時刻。 – user123

相關問題