关于状态的MySql触发器函数

问题描述 投票:-2回答:1

我想问一个关于mysql数据库的解决方案。因为我使数据库(order)大约3列命名为order_date(datatype-date),expired_date(datatype-date)和status(varchar(10))。

作为状态值仅是新的和已过期。[仅作为来自用户的'新'输入]

我想要的主要过程是

  • 截止日期(从order_date计算得出)应该知道当日情况良好
  • 如果当前日期大于到期日期。数据库应被触发,并将状态列“ New”更新为“ Expired”

据我所知,我应该使用SQL触发器。如何为上述用例实现触发器。

mysql sql date database-trigger sql-view
1个回答
0
投票

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

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

另一方面,...在您的模式中,statusderived信息,该列是可以从其他列的值推断出其值的列。我不建议实际存储此信息,因为这将需要额外且繁琐的维护过程。

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

create view view_orders as
select
    order_date,
    expired_date,
    case when curent_date > expired_date then 'expired' else 'new' end status
from orders
© www.soinside.com 2019 - 2024. All rights reserved.