2017-03-01 88 views
0

我笏創建該觸發器設置爲clomn一個defaul值,但我得到這個消息的錯誤:#1064 - 你有一個錯誤的SQL語法;檢查對應於您MariaDB的服務器版本在4號線MySQL的觸發器進行更新NEX列:語法錯誤

使用近「」正確的語法手冊,這是我的腳本:

CREATE TRIGGER trg_set_content_val BEFORE INSERT 
    ON post_table 
    FOR EACH ROW BEGIN 
     set NEW.content = 'mu value here'; 
END; 

回答

2

您需要的delimiter設置爲分號別的東西存儲程序之前,然後改回:

DELIMITER // 
CREATE TRIGGER trg_set_content_val 

BEFORE INSERT 
    ON post_table 
    FOR EACH ROW BEGIN 
     set NEW.content = 'mu value here'; 
END// 
DELIMITER ; 

原因:

如果使用mysql客戶端程序定義包含分號字符的存儲程序 ,則會出現問題。默認情況下,MySQL的 本身識別分號作爲語句分隔符,所以你必須重新定義 的分隔符暫時導致MySQL來整個 存儲程序定義傳遞給服務器。

要重新定義MySQL的定界符,使用定界符命令。該 下面的例子說明如何爲 剛剛展示的dorepeat()方法做到這一點。分隔符改變爲//以使整個 定義要傳遞給服務器作爲一個單一語句,然後 恢復;在調用該過程之前。這使得;在過程體用於 定界符通過被傳遞到服務器 而不是由MySQL本身被解釋。

+0

Thnak你這麼多@Shadow,它工作正常 – James

+0

在這種情況下,請標誌着答案被接受,讓其他觀衆知道,這個問題已經解決了。 – Shadow

+0

是的,我只是等待8分鐘,然後我可以接受答案:) – James