删除旧行 MySQL 触发器 - 初学者

Posted

技术标签:

【中文标题】删除旧行 MySQL 触发器 - 初学者【英文标题】:Delete old rows MySQL Trigger - beginner 【发布时间】:2016-01-18 13:43:46 【问题描述】:

我正在寻找一种从我的 mysql 表中删除旧行的方法,但我并没有真正理解我发现的问题和答案,所以我希望有人能澄清一下。我在我的表中添加了一个 Timestamp 列,我在其中存储了该行的创建日期。如果该行超过四个月,我不想删除它。我已经研究过触发器,但如果我理解正确,插入触发器只允许您使用插入的行?也许我错了,但我对触发器很陌生,甚至不明白何时/如何运行它们?只运行一次就够了吗,每次有人插入东西时会自动重复该动作吗(如果是插入触发器)?

我经常运行我的 insertQuery,每次有人请求他们绘画的 URL 时。我正在使用 php,我的表格结构如下:

DatabaseID || theKey  || Timestamp
1             abcd       2016-01-02
2             a1bc       2016-01-03
3             a1sb       2016-01-03
4             a12b       2016-01-05

编辑:忘了提一下,我希望自动删除旧行并且每周至少运行一次。

【问题讨论】:

Delete all rows with timestamp older than x days的可能重复 旁注:如果Key 是您的实际列名,那是MySQL (R) 的保留字,因此您需要对其进行特殊处理。 dev.mysql.com/doc/refman/5.5/en/keywords.html “忘了说,我希望自动删除旧行,并且每周至少运行一次。” - 使用 cron 作业。 触发器是执行由数据修改事件触发的偏移操作。保持表中旧条目的清洁并不能真正做到这一点,而且触发器不能修改表中其他记录中的数据。我会创建一个维护脚本(一个简单的删除,如果你想完全删除记录)并使用操作系统级别的调度程序或mysql自己的调度程序来安排它的执行。 @Fred-ii- 我的错误,我将其命名为 theKey 以避免混淆 【参考方案1】:

最好有一个mysql事件调度器http://dev.mysql.com/doc/refman/5.7/en/create-event.html

作为第一步,您需要将调度程序激活为

SET GLOBAL event_scheduler = ON;

请注意,如果服务器重新启动,则需要重置 上面所以最好在 [mysqld] 下的某处设置 event_scheduler=on 默认mysql配置文件中的部分,通常是/etc/my.cnf,make 一定要重启mysql服务器

一旦调度器设置好后,运行下面看看它是否工作,你应该看到一些东西

show variables like '%event_scheduler%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+

最后在终端上把调度器写成

delimiter //
create event if not exists clean_old_records
on schedule every 1 week
do
begin
 delete from your_table_name 
 where 
 Timestamp < date_sub(curdate(),interval 1 month) ;
end; //
delimiter ;

在上面的示例中,它将删除超过一个月的记录,您可以拥有自己的值。

【讨论】:

谢谢,看起来不错!但是我找不到任何 .cnf 文件(我一开始没有实现 MySQL 的使用)而且我没有使用 Ubuntu... 您使用的是哪个操作系统? 我使用的是 Windows 7! 在此处查看 Windows 选项dev.mysql.com/doc/refman/5.7/en/option-files.html

以上是关于删除旧行 MySQL 触发器 - 初学者的主要内容,如果未能解决你的问题,请参考以下文章

零点起飞学MySQL 带书签完整pdf版[85.8MB] 完整版下载

跳出初学MySQL知识的原理整理

跳出初学MySQL知识的原理整理

mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

MySQL初学者的相关语句

MySQL初学者的相关语句