2014-01-14 61 views
0

我目前有:的phpMyAdmin不能處理觸發

delimiter // 

CREATE TRIGGER blog_creator AFTER INSERT ON news 

IF (EXISTS(SELECT * FROM news WHERE headline = 'LastItem' 
THEN 
INSERT INTO `blog` (`id`, `title`, `content`) VALUES (500, 'Hi', 'An item was posted!'); 

delimiter ; 

phpMyAdmin是不撿這件事。沒有錯誤信息,只是一個加載符號,然後什麼都沒有SHOW TRIGGERS不顯示任何內容,插入新聞也無能爲力。我究竟做錯了什麼?

回答

2

你錯過了幾件事。 試試這個:

delimiter // 

CREATE TRIGGER blog_creator AFTER INSERT ON news 
FOR EACH ROW --always add this line 
BEGIN -- start code block 
    -- I think it would be faster to do the count instead of exists 
    IF ((SELECT COUNT(*) FROM news WHERE headline = 'LastItem') > 0) 
    THEN 
    INSERT INTO `blog` (`id`, `title`, `content`) VALUES (500, 'Hi', 'An item was posted!'); 
    END IF; --you need to end if 
END// --you need to end trigger using the new delimiter 

delimiter ; 

你可以在這裏嘗試SQLFiddle:

http://sqlfiddle.com/#!2/524b4/1

+0

出於某種原因,phpMyAdmin的顯示,它的裝載,然後什麼也不做。沒有確認或錯誤消息。其他SQL查詢正常工作。感謝您嘗試到目前爲止。 – ohyeah

+0

這段代碼應該真的有效。在過去,我在phpMyAdmin中使用存儲過程和觸發器時遇到了一些麻煩。我的解決方案是切換到MySQL Workbench :) – Zagor23

+0

哪個phpMyAdmin版本? –