在注册表中增加一列

问题描述 投票:0回答:1

参考以下模式,并在注册表中添加一个字段--DOC与日期类型。

确保DOC大于DOJ。(注:DOC - Date of Completion )。

这就是模式。

course enrollement management

这是我的代码

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
oracle ddl alter
1个回答
0
投票

我不确定你是否使用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;

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.