2012-05-21 74 views
-1

這是我第一次使用mysql和我綁定學習如何使用觸發器。錯誤1064在觸發器mysql

即時通訊使用navicat,我去表設計,然後去觸發選項卡。我創建了一個名爲測試的觸發和定義我打字:

delimiter | 
    CREATE TRIGGER lpr.mytesting AFTER INSERT ON lpr.lpr_opt_upload 
    FOR EACH ROW BEGIN 
     set new.lpr_text := reverse(new.lpr_text); 
    END; 
| delimiter ; 

的所有IM搭售做的是,每當新的東西被插入,我扭轉lpr_text字段中的文本。但是,我得到了「1064-你的SQL有錯誤;檢查與你的MySql服務器版本相對應的手冊是否符合正確的語法」ON lpr_opt_upload「FOR EACH ROW創建觸發器測試,然後在第1行插入lpr_op'。 「我不明白我做錯了什麼,我只是複製一個觸發器的例子。

// -------------------------------------------- ----------------------------- //

我想出了問題所在。我正在使用navicat,而在navicat觸發器選項卡中,只能將該正文輸入到定義中,而不是頭文件(例如:CREATE TRIGGER lpr.mytesting AFTER INSERT ON lpr.lpr_opt_upload)。觸發器名稱旁邊有複選框,您可以使用這些複選框而不是編寫自己的標題。

+0

謝謝,你是對的。 – help

回答

1

DELIMITER命令是一個客戶端命令,並非所有客戶端都支持它(它根本不會被髮送到服務器,它只是指示客戶端如何區分語句以便它們能夠正確發送到服務器)。在MySQL手冊中對其的引用假設您正在使用'官方'MySQL客戶端,例如mysql命令行工具或MySQL Workbench(兩者都支持DELIMITER命令)。

我不知道如何更改Navicat中的語句分隔符,但這是問題的根源。