我想问一个关于mysql数据库的解决方案。因为我使数据库(order)大约3列命名为order_date(datatype-date),expired_date(datatype-date)和status(varchar(10))。
作为状态值仅是新的和已过期。[仅作为来自用户的'新'输入]
我想要的主要过程是
据我所知,我应该使用SQL触发器。如何为上述用例实现触发器。
如果您正在寻找要定期运行的update
语句,并且该语句设置了新过期项目的状态,则为:
update orders
set status = 'expired'
where curent_date > expired_date and status = 'new'
另一方面,...在您的模式中,status
是derived信息,该列是可以从其他列的值推断出其值的列。我不建议实际存储此信息,因为这将需要额外且繁琐的维护过程。
相反,您可以创建一个视图,该视图在查询时即刻计算信息,并为您提供有关数据的始终最新的视图。
create view view_orders as
select
order_date,
expired_date,
case when curent_date > expired_date then 'expired' else 'new' end status
from orders