0

我创建了一个 EVENT 基本上做了两件事:

  1. SELECT超过 30 天并INSERT进入achieve表的行。
  2. DELETE表中超过 30 天的行trends

我分别测试了这两个脚本,它们都可以正常工作,但是将它们放入 EVENT 时出现语法错误。

如果我只在事件正文中使用用户INSERT INTODELETE脚本,则可以很好地保存。

脚本是:

CREATE DEFINER=`root`@`localhost` 
    EVENT `trend_decayer` ON SCHEDULE EVERY 1 DAY 
    STARTS '2016-08-30 00:00:00' ON COMPLETION NOT PRESERVE ENABLE 
    COMMENT 'Decay trends that are older than 30 days' 
DO
INSERT INTO `achieve` 
    SELECT *, FROM_UNIXTIME(`trends`.`timestamp`) AS `datetime` 
    FROM `trends`
    WHERE `t`.`timestamp` < UNIX_TIMESTAMP(CAST(DATE_SUB(NOW(), INTERVAL 30 DAY) AS DATETIME)) 
    ORDER BY `datetime` DESC;
DELETE 
    FROM `trends` 
    WHERE `timestamp` < UNIX_TIMESTAMP(CAST(DATE_SUB(NOW() , INTERVAL 30 DAY) AS DATETIME));

错误信息是:

MySQL said: #1064 - 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 
'INTO `achieve` 
    SELECT *, FROM_UNIXTIME(`timestamp`) AS `datetime` FR' at line 2`
4

0 回答 0