我有一个名为“memo”的表,其结构如下:
+-------+-------------+-----------------------+--------+-------------------+
| id | memo | date | status | valid until |
+-------+-------------+-----------------------+----------------------------+
| 1 | title1 | 2013-01-19 03:14:07 | 0 | 2013-01-19 |
| 2 | title2 | 2013-01-19 04:14:07 | 0 | 2013-01-20 |
| 3 | title3 | 2013-01-19 05:14:07 | 0 | 2013-01-23 |
| 4 | title4 | 2013-01-19 06:14:07 | 1 | 2013-01-25 |
| 5 | title5 | 2013-01-19 07:14:07 | 1 | 2013-01-27 |
+-------+-------------+-----------------------+--------+-------------------+
我担心的是,当备忘录达到截止日期(即有效期限)时,状态应更改为 0。 如何在 MySQL 触发器中执行此操作? 任何想法都会很棒!
最佳答案
您需要创建一个事件
来完成此任务。触发器不会有帮助,因为它们与整行关联并在插入、删除或更新时执行。
编写一个计划的事件,该事件将每小时执行一次(运行频率取决于您)并检查备忘录是否有效。如果已过期,则将相应的status
条目设置为1。
从这里开始 http://dev.mysql.com/doc/refman/5.1/en/create-event.html
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
UPDATE memo SET status = 1 where sysdate()> valid until;
关于MySQL 事件 'Update on Column',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25756488/