创建触发器以删除> 90天之前的行

时间:2014-06-11 16:05:34

标签: mysql mysql-workbench

尝试创建一个触发器,删除任何90天的记录。我使用了stackoverflow中的一个触发器语句,我发现并稍微更改了语句,但在我的MySQL Workbench中,我收到了语法错误。我似乎无法弄清楚出了什么问题。

以下是我的询问:

create trigger user_connections_dump after insert on user_connections 
for each row
begin
   delete from connection_time where Date('2014-06-09') > Date('now','-90 days')
end;

3 个答案:

答案 0 :(得分:7)

您的需求看起来更像是一个事件,而不是一个触发器。

CREATE EVENT IF NOT EXISTS `Clean_Older_Than_90_days_logs`
ON SCHEDULE
  EVERY 1 DAY_HOUR
  COMMENT 'Clean up log connections at 1 AM.'
  DO
    DELETE FROM log
    WHERE log_date < DATE_SUB(NOW(), INTERVAL 90 DAY)

参考文献: MySQL Event Scheduler on a specific time everyday

答案 1 :(得分:2)

CREATE TRIGGER user_connections_dump
AFTER INSERT ON user_connections
FOR EACH ROW
DELETE FROM log
WHERE log_date < DATE_SUB(NOW(), INTERVAL 90 DAY)

您应该比较log表中的日期列,而不是文字日期。然后使用DATE_SUB减去日期,而不是Date函数。

答案 2 :(得分:1)

CREATE EVENT IF NOT EXISTS `Delete_Older_Than_90_Days`
  ON SCHEDULE EVERY 1 DAY
  STARTS STR_TO_DATE(DATE_FORMAT(NOW(),'%Y%m%d 0100'),'%Y%m%d %H%i') + INTERVAL 1 DAY
DO
  DELETE LOW_PRIORITY FROM log WHERE log_date < DATE_SUB(NOW(),INTERVAL 90 DAY)