mysql - SQL 触发器 - 更新日期早于当前日期的字段

标签 mysql sql triggers phpmyadmin

我有一个事件表,以及它们在数据库中发生的日期。因此,自然地,当事件结束后,它不需要显示在网站上。目前我在表中有一个“事件”标志。

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

另一个选择是在数据库查询中处理它。从日期 > 日期 AND 事件 = 1 的事件中选择 *。

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

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

最佳答案

您可以为此编写一个 View :

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

如果您确实想承担创建触发器和维护字段的负担,那么您可以这样做。然而,当 View 很容易处理这个问题时,这似乎不值得。

关于mysql - SQL 触发器 - 更新日期早于当前日期的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394333/

相关文章:

sql - 防止任何表上的意外更新/删除

php - 仅当数据库中不存在数据时才插入

php - 在 PDO 中使用 mysql insert 和 implode

SQL Server - 获取表的大致大小

sql - 为防止插入的sqlite数据库创建触发器

mysql - 必须声明“RAISERROR”

mysql - 无法使用 gitlab-ci.yml 连接到 MySql

mysql - 考虑到与其关联的项目数量,如何使列跨越一行

mysql - IN 内的 SQL 查询结果

Mysql触发器更新如果日期匹配和插入如果不匹配所有之前插入