我使用codeigniter框架
例如,我有表A.我希望我的系统每2分钟自动删除表A中的所有记录
是否可以做到?
谢谢
答案 0 :(得分:7)
您可以使用MySQL事件调度程序。
<强>先决条件:强>
您必须在mysql服务器中启用event_scheduler。
检查事件调度程序是ON
还是OFF
SELECT @@event_scheduler;
要转动event_scheduler ON
,请运行以下查询:
SET GLOBAL event_scheduler = ON;
注意:如果重新启动MYSQL Server
,则将重置事件调度程序状态,除非在配置文件中写入以下内容。
对于Windows: my.ini 文件中的,请在[mysqld]
部分
[mysqld]
event_scheduler=on
对于Linux: my.cnf 文件
[mysqld]
event_scheduler=on
<强>事件:强>
以下事件将从名为tablename
的表中删除数据。
CREATE
EVENT `deleteEvent`
ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
DELETE FROM tablename;
该活动将首次在'2016-03-23 00:00:00'
开始
之后,事件将每隔2分钟安排一次,并将从您的表中删除数据。
您可以使用Truncate
代替DELETE
。
答案 1 :(得分:3)
最好和快速的方法是截断表而不是删除,所以你可以通过mysql自己的事件调度程序或cronjob来完成 -
按事件安排程序 -
DELIMITER $$
ALTER DEFINER=`root`@`localhost` EVENT `trun_table` ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 16:30:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
truncate table mytable;
END$$
DELIMITER ;
如果Mysql在Windows机器上运行,则运行在Linux或OR任务管理器上的cronjob:
写“truncate table mytable;”语法在一个文件中,并从cronjob或任务调度程序安排它。
注意:如果您不想在表中重置auto_increment id,则使用delete语句而不是truncate,因为truncate语句会将其重置为1.
答案 2 :(得分:2)
您可以使用Cronjob每2分钟删除表A中的所有记录。将PHP脚本(带删除功能)分配给Web服务器上的Cronjob。