如何在Oracle11g的一行中添加NOTNULL列和check约束?
我正在尝试向表中添加一个新的整数列。该列不能为NULL,默认值为1,并且只接受大于零的值 我现在正试图这样做:如何在Oracle11g的一行中添加NOTNULL列和check约束?,oracle,oracle11g,Oracle,Oracle11g,我正在尝试向表中添加一个新的整数列。该列不能为NULL,默认值为1,并且只接受大于零的值 我现在正试图这样做: ALTER TABLE FOO_AUTHORS ADD PUBLICATION_PERIOD_DAYS INTEGER DEFAULT(1) NOT NULL CONSTRAINT publicationPeriodDays CHECK (PUBLICATION_PERIOD_DAYS>0); 有没有一种方法可以在一行中完成?我正在遵循这个示例,但由于NOTNULL,它不起
ALTER TABLE FOO_AUTHORS
ADD PUBLICATION_PERIOD_DAYS INTEGER DEFAULT(1) NOT NULL
CONSTRAINT publicationPeriodDays
CHECK (PUBLICATION_PERIOD_DAYS>0);
有没有一种方法可以在一行中完成?我正在遵循这个示例,但由于NOTNULL,它不起作用。那么非空值是必要的吗
我从数据库中得到以下错误:
QL错误:ORA-02293:无法验证(DBOWNER.PUBLICATIONPERIODDAYS)-违反了检查约束
229300000-“无法验证(%s.%s)-检查违反的约束”
*原因:alter table操作试图验证对的检查约束
填充的表中没有复合值
如果我在不使用NOT NULL的情况下尝试它,它会正常工作。将
NOT NULL
约束滚动到CHECK
约束中:
ALTER TABLE FOO_AUTHORS
ADD PUBLICATION_PERIOD_DAYS INTEGER DEFAULT 1
CONSTRAINT publicationPeriodDays
CHECK ( PUBLICATION_PERIOD_DAYS IS NOT NULL AND PUBLICATION_PERIOD_DAYS > 0 );
现有行的
发布周期天数将设置为默认值。将非空
约束滚动到检查约束中:
ALTER TABLE FOO_AUTHORS
ADD PUBLICATION_PERIOD_DAYS INTEGER DEFAULT 1
CONSTRAINT publicationPeriodDays
CHECK ( PUBLICATION_PERIOD_DAYS IS NOT NULL AND PUBLICATION_PERIOD_DAYS > 0 );
现有行的发布周期天数将设置为默认值