首页 > 解决方案 > MySql关于状态的触发函数

问题描述

我想问一个mysql数据库的解决方案。因为我创建了大约 3 个名为 order_date(datatype - date)、expired_date(datatype - date) 和 status(varchar(10)) 的列的数据库(order)。

因为状态值只有新的和过期的。[只有用户输入的“新”输入]

我想要的主要过程是

据我所知,要做到这一点,我应该使用 SQL 触发器。如何为上述用例实现触发器。

标签: mysqlsqldatedatabase-triggersql-view

解决方案


如果您正在寻找update将定期运行的语句,并设置新过期项目的状态,则应为:

update orders
set status = 'expired'
where curent_date > expired_date and status = 'new'

另一方面......在您的架构中,status派生信息,即可以从其他列的值推断出其值的列。我不建议实际存储这些信息,因为它需要额外且繁琐的维护过程。

相反,您可以创建一个视图,在查询时即时计算信息,并为您提供始终最新的数据透视图。

create view view_orders as
select
    order_date,
    expired_date,
    case when curent_date > expired_date then 'expired' else 'new' end status
from orders

推荐阅读