将CONCAT与MySQL触发器一起使用(错误为,)
我试图创建一个触发器,在编辑x表中的行时写入日志 这是当前查询将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
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());