问一个Oracle的问题
orderr表
orderNo custNo orderDate dilivDate
21 10001 2002-1-5 2002-1-5
22 10002 2002-1-15 2002-1-16
23 10003 2002-2-10 2002-2-20
24 10002 2002-3-4 2002-3-5
使用ALTER TABLE添加约束delivDateOverorderDate使得表中的送货日期delivDate字段的值不小于订货日期orderDate字段的值。
orderr表
orderNo custNo orderDate dilivDate
21 10001 2002-1-5 2002-1-5
22 10002 2002-1-15 2002-1-16
23 10003 2002-2-10 2002-2-20
24 10002 2002-3-4 2002-3-5
使用ALTER TABLE添加约束delivDateOverorderDate使得表中的送货日期delivDate字段的值不小于订货日期orderDate字段的值。
2 custNo varchar2(20), orderDate date,
3 dilivDate date, constraint c_ck_date check(dilivDate>=orderDate));
Table created
SQL> insert into orderr values('21','10001',date'2002-1-5',date'2002-1-5');
1 row inserted
SQL> insert into orderr values('22','10002',date'2002-2-5',date'2002-2-1');
insert into orderr values('22','10002',date'2002-2-5',date'2002-2-1')
ORA-02290: 违反检查约束条件 (TEST.C_CK_DATE)
SQL>
--如果表已经建好,可以下面语句增加约束
alter table orderr add constraint c_ck_date check(dilivDate>=orderDate);
alter table orderr add constraint c_ck_date
check(to_date(dilivdate,'yyyy-mm-dd')>=to_date(orderdate,'yyyy-mm-dd'));
你可以重建表,并添加check(to_date(dilivdate,'yyyy-mm-dd')>=to_date(orderdate,'yyyy-mm-dd'));
约束,就实现"送货日期delivDate字段的值不小于订货日期orderDate字段的值"了;