如何在注册表中添加日期类型的字段-单据。doc(完成日期)也应大于doj(加入日期)。我编写了这个查询,但它显示错误:列检查约束不能引用其他列
ALTER TABLE Registration add DOC date CHECK(DOC > DOJ);
0md85ypi1#
使用单个alter table语句添加doc列和check约束(请参见此处的DBFIDLE):
-- table for testing create table atable( doj date ) ; alter table atable add ( doc date , constraint checkdoc check( doc > doj ) -- cannot be coded *inline* ); -- testing ----------------------------------------------------- -- this insert must succeed insert into atable( doj, doc ) values ( sysdate, sysdate + 1 ); -- this insert must fail due to the CHECK constraint insert into atable( doj, doc ) values ( sysdate + 1, sysdate ) ; -- ORA-02290: check constraint (...CHECKDOC) violated -- table/data -------------------------------------------------- select * from atable ; DOJ DOC 03-JUN-20 04-JUN-20
bmp9r5qi2#
您需要在表级别而不是列级别创建约束。例如:
SQL> create table t(x number, doj date); Table created. SQL> alter table t add doc date; Table altered. SQL> alter table t add constraint check_doc check (doc > doj); Table altered. SQL>
2条答案
按热度按时间0md85ypi1#
使用单个alter table语句添加doc列和check约束(请参见此处的DBFIDLE):
bmp9r5qi2#
您需要在表级别而不是列级别创建约束。
例如: