【问题标题】:mysql Trigger for update nex column : Syntax errormysql 更新 nex 列的触发器:语法错误
【发布时间】:2017-07-21 11:53:27
【问题描述】:

我想创建此触发器来为 clomn 设置默认值,但我收到此消息错误:#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 4 行的 '' 附近使用正确的语法

这是我的脚本:

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

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

    您需要在存储的程序之前将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 分隔符,请使用 delimiter 命令。这 以下示例显示了如何为 dorepeat() 过程执行此操作 刚刚显示。分隔符更改为 // 以启用整个 定义作为单个语句传递给服务器,然后 恢复到 ;在调用程序之前。这使 ; 过程主体中使用的分隔符传递给 服务器而不是由 mysql 本身解释。

    【讨论】:

    • 在这种情况下,请将答案标记为已接受,让其他观众知道问题已解决。
    • 是的,我只等 8 分钟然后我可以接受答案:)
    猜你喜欢
    • 2021-02-13
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多