使用MySQL触发错误

时间:2014-08-09 17:07:47

标签: mysql sql triggers intervals

这是我第一次尝试设置触发器,但实际上,我已经在努力工作了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;

您能否解释一下触发器声明中的错误在哪里? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

只有几个小问题:

  • BEFORE INSERT ON post
  • 上缺少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

代替。在这种情况下,其他一些眼睛也很有用。