这是我第一次尝试设置触发器,但实际上,我已经尽力了 1 个小时,但我的尝试失败了。
代码是这样的,方式很简单,我声明了一个forum-post表,我想用触发器设置过期日期。
创建表帖子(
pid INT NOT NULL AUTO_INCRMENT,
所有者 ID INT,
标题 VARCHAR(140),
文本 VARCHAR(255),
发布的 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
到期日期时间,
主键(pid),
外键(owner_id)引用用户(userid)
);
分隔符$$
创建触发帖子
插入帖子之前
对于每一行开始
SET new.'expiration' = DATE_ADD(NOW(), INTERVAL 60 DAY);
结尾;
$$
分隔符;
您能解释一下触发器声明中的错误在哪里吗? 预先感谢您。
最佳答案
只有几个小问题:
BEFORE INSERT ON 帖子
中缺少 ON 关键字- 列名称周围有单引号
new.expiration
,而不是反引号或最好没有引号 - DELIMITER 和分隔符字符串之间也需要空格。
应该是
delimiter $$
CREATE TRIGGER post
BEFORE INSERT ON post -- ON missing
FOR EACH ROW BEGIN
SET new.expiration = DATE_ADD(NOW(), INTERVAL 60 DAY); -- no single quotes
END;
$$
DELIMITER ; -- blank needed
相反。在这种情况下,其他一些眼睛会派上用场。
关于mysql - 使用 MySQL 触发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221034/