2013-07-31 28 views
1

我正在嘗試在phpMyAdmin中創建一個觸發器,我可以根據字段名稱隨時修改字段的值。我用這句法使用變量觸發phpMyAdmin

CREATE TRIGGER lawyers AFTER INSERT ON wp_posts 
FOR EACH ROW 
BEGIN 
UPDATE wp_posts SET post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'  
WHERE ID = NEW.ID AND post_type = 'lawyers'; 
END 

,但我不能讓它工作,它說:

#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 4 

你能幫幫我嗎?

回答

2

無論如何,您無法編寫這樣的觸發器,更新您要插入的同一張表。當我測試了扳機,我得到這個:

ERROR 1442 (HY000): Can't update table 'wp_posts' in stored function/trigger 
because it is already used by statement which invoked this stored 
function/trigger. 

下應該做同樣的事情,你的觸發器:

CREATE TRIGGER lawyers BEFORE INSERT ON wp_posts 
FOR EACH ROW 
BEGIN 
IF (NEW.post_type = 'lawyers') THEN 
    SET NEW.post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'; 
END IF; 
END 

答:phpMyAdmin的,需要一個特殊的模式,如果你使用CREATE TRIGGER或CREATE PROCEDURE。

  • 下面的SQL查詢中,有標記分隔符小的表單字段。將其設置爲$$

  • 輸入您的CREATE TRIGGER語句並在最後END之後用$$終止它。

  • 單擊轉到按鈕。

參見http://wiki.phpmyadmin.net/pma/Trigger

這類似於在MySQL命令行的客戶端使用該DELIMITER built-in command

+0

你好,謝謝你的回答。我試過你的查詢,但我一直得到相同的錯誤:'#1064 - 你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第5行''附近使用正確的語法。你認爲它是一個服務器問題? –

+0

你使用的是什麼版本的MySQL?嘗試'SELECT VERSION();' –

+0

MySQL:5.1.41-3 –