如何在Oracle11g的一行中添加NOTNULL列和check约束?

如何在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,它不起

我正在尝试向表中添加一个新的整数列。该列不能为NULL,默认值为1,并且只接受大于零的值

我现在正试图这样做:

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 );
现有行的
发布周期天数将设置为默认值