gpt4 book ai didi

mysql - 将 CONCAT 与 MySQL 触发器一起使用(在 , 处出错)

转载 作者:行者123 更新时间:2023-11-29 04:22:20 24 4
gpt4 key购买 nike

我正在尝试创建一个触发器,以便在编辑 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

控制台返回以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6

谁能告诉我我做错了什么?

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

CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`hourly` decimal(10,2) DEFAULT NULL,
`date_paid` date DEFAULT NULL
;

用户积压:

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
);

最佳答案

更新:

  1. 看起来您没有更改 DELIMITER
  2. 您很可能是指 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 ;

或者(因为你的触发器中只有一个语句,所以你可以省略 BEGIN ... END block 和 DELIMITER)

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());

这是 SQLFiddle 演示

关于mysql - 将 CONCAT 与 MySQL 触发器一起使用(在 , 处出错),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com