没写过oracle的约束,不知是个什么语法。还请帮帮忙
第一个约束:A字段默认值是“PENDING”,值必须为“PENDING”、“APPROVED”、“DENIED”三者之一。
第二个约束:日期DATE_A字段>=日期DATE_B字段。
第三个约束:只有当A字段为“PENDING”时,表B中的C字段才允许为空。
第一个约束:A字段默认值是“PENDING”,值必须为“PENDING”、“APPROVED”、“DENIED”三者之一。
第二个约束:日期DATE_A字段>=日期DATE_B字段。
第三个约束:只有当A字段为“PENDING”时,表B中的C字段才允许为空。
CONSTRAINT 约束名1
CHECK (a='PENDING or a='APPROVED' or a='DENIED'),
CONSTRAINT 约束名2
check(date_a>=date_b))
第三个不知道怎么写
以为没有测试过
默认值
alter table 表名 modify a default 'PENDING'
我上就写过一个,判断分钟数,设定>=0,<60的
CREATE TABLE EXPENSEREPORT
(
ERNO NUMBER NOT NULL,
ERDESC VARCHAR2(255 CHAR) NOT NULL,
ERSUBMITDATE DATE DEFAULT sysdate NOT NULL,
ERSTATUSDATE DATE DEFAULT sysdate NOT NULL,
ERSTATUS VARCHAR2(8 CHAR) DEFAULT 'PENDING' NOT NULL,
SUBMITUSERNO NUMBER NOT NULL,
APPRUSERNO NUMBER
)
;
ALTER TABLE EXPENSEREPORT
ADD CONSTRAINT EXPENSEREPORT_CHK1 CHECK
(ERStatus in ('PENDING','APPROVED','DENIED'))
ENABLE
;
ALTER TABLE EXPENSEREPORT
ADD CONSTRAINT EXPENSEREPORT_CHK2 CHECK
(ERStatusDate >= ERSubmitDate)
ENABLE
;
ALTER TABLE EXPENSEREPORT
ADD CONSTRAINT EXPENSEREPORT_CHK3 CHECK
(ApprUserNo is not null and ERSTATUS in ('APPROVED','DENIED'))
ENABLE
;