2017-03-01 45 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