我有一张存储新闻的表格。有两种类型的新闻:简单和预定新闻。预定新闻必须每年显示,并且必须在30天后隐藏。我无法在服务器上创建一个cron作业,所以我决定使用MySQL预定事件。 这是我的疑问。
canvases
但是当我尝试执行它时,MySQL会抛出错误
DROP EVENT IF EXISTS `update_news`;
DELIMITER $$
CREATE
EVENT `update_news`
ON SCHEDULE EVERY 1 DAY STARTS '2015-07-15 00:00:00'
DO BEGIN
UPDATE `yakutsk-gf`.`app_news_item`
SET `date` = DATE_ADD(`date`, INTERVAL 1 YEAR)
WHERE `isCalendar` = '1' AND DATEDIFF(NOW(), `date`) > 30
ORDER BY `date` DESC;
END $$
DELIMITER ;
我试图找到解决问题的方法,但到目前为止还没有找到。 仅供参考,mysql版本为5.5.43-0
答案 0 :(得分:1)
从技术上讲,您不需要更改DELIMITER
并使用BEGIN...END
阻止,因为您的身体只有一个声明。
以这种方式试试
CREATE EVENT update_news
ON SCHEDULE EVERY 1 DAY STARTS '2015-07-15 00:00:00' DO
UPDATE yakutsk-gf.app_news_item
SET date = DATE_ADD(date, INTERVAL 1 YEAR)
WHERE isCalendar = '1'
AND DATEDIFF(NOW(), date) > 30
ORDER BY date DESC;