将CONCAT与MySQL触发器一起使用(错误为,)

将CONCAT与MySQL触发器一起使用(错误为,),mysql,sql,triggers,concat,Mysql,Sql,Triggers,Concat,我试图创建一个触发器,在编辑x表中的行时写入日志 这是当前查询 CREATE TRIGGER users_update_trigger AFTER UPDATE ON users FOR EACH ROW BEGIN INSERT INTO users_backlog (user_id, description, datetime) VALUES (user_id, CONCAT('modified from ', OLD.value, ' to ', NEW.value

我试图创建一个触发器,在编辑x表中的行时写入日志

这是当前查询

CREATE TRIGGER users_update_trigger
AFTER UPDATE ON users FOR EACH ROW
BEGIN
    INSERT INTO users_backlog
    (user_id, description, datetime) VALUES (user_id,
    CONCAT('modified from ', OLD.value, ' to ', NEW.value), CURTIMESTAMP());
END
控制台返回以下错误:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第6行的“”附近

有人能告诉我我做错了什么吗

编辑: 相关表的架构 用户:

用户的待办事项:

CREATE TABLE IF NOT EXISTS `users_backlog` (
  `log_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `description` varchar(50) NOT NULL,
  `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);

您没有将
分隔符设置为与
不同的值在运行定义之前。

您没有将
分隔符设置为与
不同的值更新:

  • 看起来您没有更改分隔符
  • 您很可能指的是不存在的
    CURTIMESTAMP()
  • 也就是说,一个语法正确的触发器可能看起来像

    DELIMITER $$
    CREATE TRIGGER users_update_trigger
    AFTER UPDATE ON users 
    FOR EACH ROW
    BEGIN
      INSERT INTO users_backlog (user_id, description, datetime) VALUES 
      (NEW.user_id, CONCAT('modified from ', OLD.hourly, ' to ', NEW.hourly), CURRENT_TIMESTAMP);
    END$$
    DELIMITER ;
    
    或者(因为触发器中只有一条语句,所以可以省略
    开始…结束
    块和
    分隔符


    这里是演示

    更新版:

  • 看起来您没有更改分隔符
  • 您很可能指的是不存在的
    CURTIMESTAMP()
  • 也就是说,一个语法正确的触发器可能看起来像

    DELIMITER $$
    CREATE TRIGGER users_update_trigger
    AFTER UPDATE ON users 
    FOR EACH ROW
    BEGIN
      INSERT INTO users_backlog (user_id, description, datetime) VALUES 
      (NEW.user_id, CONCAT('modified from ', OLD.hourly, ' to ', NEW.hourly), CURRENT_TIMESTAMP);
    END$$
    DELIMITER ;
    
    或者(因为触发器中只有一条语句,所以可以省略
    开始…结束
    块和
    分隔符


    这里是演示

    1st,
    OLD.value
    NEW.value
    来自哪里?我看得出你还没有申报。第二个是
    CURTIMESTAMP()
    将返回
    时间戳
    而不是
    DATETIME
    @ChristianMark-Ah我没有声明这一点,'value'列都是十进制的(10,2)@imran请为
    用户显示表模式
    表也没有名为CURTIMESTAMP()的函数在MySQL中,那么实际的表名是什么呢?自动增量
    user\u id
    列用于
    付款
    表没有多大意义,
    OLD.value
    NEW.value
    从何而来?我看得出你还没有申报。第二个是
    CURTIMESTAMP()
    将返回
    时间戳
    而不是
    DATETIME
    @ChristianMark-Ah我没有声明这一点,'value'列都是十进制的(10,2)@imran请为
    用户显示表模式
    表也没有名为CURTIMESTAMP()的函数在MySQL中,那么实际的表名是什么呢?自动增量
    用户id
    列用于
    付款
    表没有多大意义
    CREATE TRIGGER users_update_trigger
    AFTER UPDATE ON users 
    FOR EACH ROW
      INSERT INTO users_backlog (user_id, description, datetime) VALUES 
      (NEW.user_id, CONCAT('modified from ', OLD.hourly, ' to ', NEW.hourly), NOW());