mysql - 如何保持我的“有效期”行始终相对于“到期日期”行进行更新?
问题描述
我学会了使用CURDATE()
and DATEADD()
,所以表格现在可以自动计算survey_date
and its expiration_date
。
但我也想为我的validity
专栏添加一个值。
我的有效性列是BIT(1)
.
我希望 1 代表有效调查,0 代表无效调查。
如何使该validity
列与我的列的关系始终正确expiration_date
?
我希望它根据日期而改变,所以它一直都是正确的,而不是只有在我第一次插入行时才正确。
谢谢!
解决方案
如果您可以使用生成的列添加它会很好
alter table survey
add validity bit generated always as (expiration_date < now());
但是,这是不允许的,因为now()
它是一个 volatile 函数(即,每次调用它都会改变值)。
您需要使用视图:
create view v_survey as
select s.*,
(expiration_date < now()) as is_valid
from survey;
推荐阅读
- database-design - 具有列的规范化具有冗余并且完全依赖于主键
- java - KStream 转 KTable
- corda - Corda 中的节点如何在 Enterprise Corda 版本中恢复数据
- python - tensorflow 的 tf.round() 值错误,因为它是一个没有梯度的操作
- android - Flutter 项目运行时显示错误无效参数:源不得为空
- vb.net - 从 vb.net 运行时列名无效
- linux - 什么是 .pivot_root 文件?
- visual-studio-code - 如何构建和运行 VSCode 扩展拾色器?
- c# - 如何使用 fluent api 设置手机号码和邮政编码的最大长度?
- c# - 如何对依赖基类的方法进行单元测试?