这是我第一次尝试设置触发器,但实际上,我已经在努力工作了1小时,但是我的尝试失败了。
代码是这样,非常简单,我声明了一个论坛帖子表,我想用触发器设置到期日期。
CREATE TABLE post(
pid INT NOT NULL AUTO_INCREMENT,
owner_id INT,
title VARCHAR(140),
text VARCHAR(255),
posted TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
expiration DATETIME,
PRIMARY KEY( pid ),
FOREIGN KEY( owner_id ) REFERENCES user( userid )
);
delimiter $$
CREATE TRIGGER post
BEFORE INSERT post
FOR EACH ROW BEGIN
SET new.'expiration' = DATE_ADD(NOW(), INTERVAL 60 DAY);
END;
$$
DELIMITER;
您能否解释一下触发器声明中的错误在哪里? 提前谢谢。
答案 0 :(得分:1)
只有几个小问题:
BEFORE INSERT ON post
new.expiration
周围有单引号,而不是反引号或更好的没有引号应该是
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
代替。在这种情况下,其他一些眼睛也很有用。