mysql - MySql关于状态的触发函数
问题描述
我想问一个mysql数据库的解决方案。因为我创建了大约 3 个名为 order_date(datatype - date)、expired_date(datatype - date) 和 status(varchar(10)) 的列的数据库(order)。
因为状态值只有新的和过期的。[只有用户输入的“新”输入]
我想要的主要过程是
- 由于过期日期(从 order_date 计算)应该知道当前日期表现良好
- 如果 currentday 大于过期日期。应触发数据库并将状态列“新”更新为“已过期”
据我所知,要做到这一点,我应该使用 SQL 触发器。如何为上述用例实现触发器。
解决方案
如果您正在寻找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
推荐阅读
- node.js - 每次使用不同的左连接进行 TypeORM 计数分组
- javascript - package.json 启动脚本失败反应
- python - 检测一个键是否被按下 - python
- vue.js - VueJS - 使用 $refs 获取子宽度
- gensim - 为什么我在 gensim 中的 Doc2Vec 模型不可重现?
- java - 删除重复并合并列表中的对象
- javascript - Update parent in Firebase Realtime Database
- javascript - 如何将 GraphQL 模式字符串转换为 JSON?
- python-3.x - 如何使轴对事件透明?
- reactjs - 以 React 多部分表单提交文件