初学者问题: 有没有办法编写一个检查约束来限制满足条件的数据。例如,如果我不想在特定日期允许1100到1300之间的预约时间。
ALTER TABLE appointment_info
ADD CONSTRAINT ap_time_ck CHECK (ap_time NOT BETWEEN 11 and 13);
我试过
ALTER TABLE appointment_info
ADD CONSTRAINT ap_time_ck CHECK (ap_time NOT BETWEEN 11 and 13 AND ap_date != '02-APR-2014');
但很明显,这将限制所有约会时间1100到1300以及4月2日的任何约会。
答案 0 :(得分:1)
这是可能的解决方案:
ALTER TABLE appointment_info
ADD CONSTRAINT ap_time_ck CHECK (not (ap_time BETWEEN 11 and 13 and ap_date = date '2014-04-02'));
我反对使用此'02-APR-2014'
,因为它可能取决于NLS设置。
或者只是在您的尝试中将and
条件更改为or
。它也可以。
ALTER TABLE appointment_info
ADD CONSTRAINT ap_time_ck CHECK (ap_time NOT BETWEEN 11 and 13 OR ap_date != '02-APR-2014');