【发布时间】:2014-02-10 19:08:09
【问题描述】:
我正在建立一个包含各种设备的数据库,其中一个实体包含该设备的保修信息。我想要的属性之一是“Is_Valid”派生属性,它基本上是“无效”或“有效”,具体取决于保修条款的结束日期是否已过。
我可以用这个查询在 SQL 中做到这一点:
CREATE TABLE Warranty(
Warranty_ID varchar(5),
Begin_Date date,
End_Date date,
Terms varchar(15),
Is_Valid as (IIF((GetDate() > Begin_Date) AND (GetDate() < End_date), 'valid','not valid')),
Primary Key (Warranty_ID));
但是,我一直在尝试在 MySQL 中完成此操作,但无法使其正常工作。我让它工作的唯一方法是使用UPDATE Warranty 查询使用case,但我宁愿数据库自动执行此操作。如果我理解错了,请原谅我,因为我是数据库结构和实现的新手。谢谢。
【问题讨论】:
-
AFAIK,你不能在 MySQL 中这样做。您可以做的是定义
ON BEFURE INSERT&ON BEFORE UPDATE触发器,或者您可以使用SELECT查询定义VIEW。
标签: mysql sql database date derived