在Oracle 11g中,我想创建一个包含两个日期列的表,并确保其中一个始终小于另一个。列将是:
START_DATE DATE NOT NULL
END_DATE DATE NOT NULL
规则是START_DATE < END_DATE
。
我应该在每个列的约束中执行此操作吗?
或者在桌面上的AFTER ROW
触发器中?
答案 0 :(得分:0)
您只需添加check
约束:
alter table t add constraint chk_t_dates check (start_date < end_date)
请注意,您甚至不必在约束中检查NULL
(如果值为NULL
,则布尔逻辑将返回NULL
。约束逻辑 - 而不是WHERE
和WHEN
- 仅将显式“false”视为未传递,因此NULL
满足约束。