MySQL 事件 'Update on Column'

标签 mysql sql events

我有一个名为“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/

相关文章:

mysql - 从 MySQL 中的 JSON 列中的 JSON 项目的日期查询日期之前的记录

delphi - 如何扩展方法(即OnClick)的参数列表并使用它?

java - 将箭头键监听器添加到实现 ActionListener 的 Jframe

javascript - jQuery 是否清空通过 addEventListener 附加的分离监听器?

PHP Array POST UPDATE 只影响最后一行

mysql - 在Mysql中对链表进行排序

mysql - 获取最近记录百分比的差异

php - 尝试使用单个查询按日期过滤 mysql 表

mysql - 使用临时文件和文件排序总是不好吗?

MYSQL查询选择不同的月份和年份