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