oracle sql检查约束条件满足

时间:2014-03-10 14:51:29

标签: sql oracle

初学者问题: 有没有办法编写一个检查约束来限制满足条件的数据。例如,如果我不想在特定日期允许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日的任何约会。

1 个答案:

答案 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');