【问题标题】:SQL Trigger - Update field where date is older than current dateSQL 触发器 - 更新日期早于当前日期的字段
【发布时间】:2014-02-19 02:05:06
【问题描述】:

我有一个事件表,其中包含它们在数据库中发生的日期。所以很自然,当一个事件完成后,它不需要显示在网站上。目前,我在表中有一个“活动”标志。

我想知道处理已经过去的事件的最佳方法是什么。我认为最好的方法是在 phpmyadmin 中创建一个事件,以便在凌晨 1 点,所有超过其日期的事件都将其“活动”标志设置为 0,但我听说这不是最好的方法它,因为它有更多的开销和不必要的 i/o。

另一种选择是在 db 查询中处理它。从 date > date AND active = 1 的事件中选择 *。

两者都有效,但是有一个“活动”标记的事件,实际上并不是活动的,这让我感到沮丧。

处理此问题的最佳方法是什么,以及是否是 phpmyadmin 中的触发器/事件。我该怎么做?

【问题讨论】:

  • 为什么要打扰活动标志?为什么不单独过滤日期?
  • 我将活动标志用于其他用途,但也可以将其用于触发器。我的问题是,哪个会更好,为什么。按日期过滤或使用触发器更新活动标志。

标签: mysql sql triggers phpmyadmin


【解决方案1】:

你可以为此写一个视图:

create view v_table as
    select t.*, ( date > now() ) as IsActive;
    from table;

如果您真的想承担创建触发器和维护字段的负担,那么您可以这样做。但是,当视图很容易处理这个问题时,它似乎并不值得。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多