MySql 关于状态的触发函数
MySql Trigger Function about status
我想问一个mysql数据库的解决方案。因为我将数据库(订单)中的 3 列命名为 order_date(数据类型 - 日期),expired_date(数据类型 - 日期)和状态(varchar(10))。
因为状态值只有新的和过期的。[因为只有 'New' 来自用户的输入]
我要的主进程是
- as expired date(从order_date计算)应该知道当天过得很好
- 如果当前日期大于过期日期。应触发数据库并将状态列 'New' 更新为 'Expired'
据我所知,要完成此操作,我应该使用 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
我想问一个mysql数据库的解决方案。因为我将数据库(订单)中的 3 列命名为 order_date(数据类型 - 日期),expired_date(数据类型 - 日期)和状态(varchar(10))。
因为状态值只有新的和过期的。[因为只有 'New' 来自用户的输入]
我要的主进程是
- as expired date(从order_date计算)应该知道当天过得很好
- 如果当前日期大于过期日期。应触发数据库并将状态列 'New' 更新为 'Expired'
据我所知,要完成此操作,我应该使用 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