参考以下模式,并在注册表中添加一个字段--DOC与日期类型。
确保DOC大于DOJ。(注:DOC - Date of Completion )。
这就是模式。
这是我的代码
alter table registration add doc date
add constraint registration_chk_date check(doc>doj);
当我编译并运行我的上述代码时,给我的结果表改变了,但从上述代码来看,我的testcases根本没有通过。谁能告诉我哪里出了问题?
以下是我在评估上述代码后得到的测试用例。
测试用例1 - 列名和数据类型检查
检查列的数据类型。
Table
COLUMN_NAME
------------------------------
COURSEID
DOC
DOJ
测试用例2--列式约束检查
检查列的约束条件。
COLUMN_NAME
------------------------------
COURSEID
DOC
DOJ
STUDID
测试用例3 - 列约束名称检查检查列的约束名称。
COLUMN_NAME
------------------------------
COURSEID
DOC
DOJ
STUDID
我不确定你是否使用PK和FK以外的约束条件,但观察结果中的最后一行.在DOJ中允许空值,它可能会导致你的测试案例失败。
CREATE TABLE registration(
courseid NUMBER(4),
studid NUMBER(4),
doj DATE
)
/
INSERT INTO registration VALUES(
1001,
100,
sysdate
);
/
ALTER TABLE registration ADD doc DATE;
ALTER TABLE registration ADD CONSTRAINT registration_chk_date CHECK(doc > doj);
INSERT INTO registration VALUES(
1001,
100,
sysdate + 1,
sysdate + 1
);
INSERT INTO registration VALUES(
1001,
100,
sysdate,
sysdate + 1
);
INSERT INTO registration(
courseid,
studid,
doc
)VALUES(
1002,
101,
sysdate
);
SELECT *
FROM registration;