2013-02-15 152 views
0

我需要在我的數據庫中創建一個觸發器。 觸發器必須能夠在插入前分析事件。如果數據庫中已存在的最後一個事件具有相同的狀態,則觸發器必須取消插入並更新最後一個事件。插入之前的MySQL和觸發器

我試圖創建一個,但我不能在我的數據庫添加它因爲MySQL的錯誤:

#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 '' at line 5 

這裏觸發:

CREATE TRIGGER events_before_insert 
BEFORE INSERT ON monitoringV2.events 
FOR EACH ROW 
BEGIN 
DECLARE id_last_event; 
DECLARE status_last_event; 

SELECT id INTO id_last_event, status INTO status_last_event FROM events WHERE module_id=NEW.module_id ORDER BY serverDate DESC LIMIT 1; 

IF NEW.status = status_last_event THEN 
UPDATE events SET serverDate=NOW() WHERE id=id_last_event; 
signal sqlstate '00000' set message_text = "Update instead of insert"; 
END IF; 
END; 

這裏是信息服務器:

PHP 5.4.6 VC9 
Apache 2.4.2 VC9 
MySQL 5.5.27 
PhpMyAdmin 3.5.2.2 

感謝您的幫助

問候,

Dorine M.

回答

0

您將需要劃定的創建語句:

delimiter //
CREATE...
...
END;
//
DELIMITER ;

,你可能會需要定義聲明的每個變量,例如一個類型

DECLARE x INT;

0

你必須創建觸發器這樣

DELIMITER $$ 
CREATE TRIGGER... 
... 
END; 
$$ 
DELIMITER ; 
0

您可能不需要實施觸發此之前改變DELIMITER。您正在描述的操作在形式上被稱爲UPSERT,即更新或插入。

This是如何在MySQL中完成的,也可以看看REPLACE

Here是另一個覆蓋這個問題的問題。

相關問題