【发布时间】:2013-12-21 17:29:01
【问题描述】:
我正在尝试创建一个触发器以在 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` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`hourly` decimal(10,2) DEFAULT NULL,
`date_paid` date DEFAULT NULL
;
Users_backlog:
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
);
【问题讨论】:
-
1st,
OLD.value和NEW.value是哪里来的?我可以看到你没有声明那些。第二个是CURTIMESTAMP()将返回TIMESTAMP而不是DATETIME。 -
@ChristianMark 啊我还没有声明这个,'value'列都是十进制的(10, 2)
-
@imran 请显示
users表的表架构 -
MySQL 中也没有调用 CURTIMESTAMP() 的函数...
-
那么实际的表名
payments或users是什么?payments表的 auto_incrementuser_id列没有多大意义