Oracle 日期不为空,错误ora_01758

Oracle 日期不为空,错误ora_01758,oracle,Oracle,为什么我会犯这个错误 在表DDL中,我只有两列,id(number)和name(varchar) ALTER TABLE mytable添加挂起日期不为空 ORA-01758:表必须为空才能添加必填(非空)列 ORA-06512:在第7行 ORA-01758:表格必须为空才能在第7行添加必需(非空)列ORA-06512: 你的桌子空了吗?我想不是 可能有一种解决方法,将列添加为可空,然后用非空值填充每一行,将列更改为notnull 或者,由于问题是这些当前行将被指定为NULL作为默认值,并且该

为什么我会犯这个错误
在表DDL中,我只有两列,id(number)和name(varchar)

ALTER TABLE mytable添加挂起日期不为空


ORA-01758:表必须为空才能添加必填(非空)列 ORA-06512:在第7行

ORA-01758:表格必须为空才能在第7行添加必需(非空)列ORA-06512:

你的桌子空了吗?我想不是

可能有一种解决方法,将列添加为可空,然后用非空值填充每一行,将列更改为
notnull

或者,由于问题是这些当前行将被指定为NULL作为默认值,并且该列不允许为NULL,因此您也可以使用默认值绕过它。从:

但是,如果给定默认值,则可以将具有NOTNULL约束的列添加到现有表中;否则,在执行ALTER TABLE语句时会引发异常


下面是一个例子,如果表中已经包含了记录,那么表将不允许添加“NOTNULL”列。
如果需要相同的值,请为列设置默认值或截断表,然后重试

将来的某个日期是否可以接受为临时违约?如果是这样,这将起作用:

ALTER TABLE MYTABLE ADD(暂停日期默认值(至日期('2100101','YYYYMMDD'))

约束挂起(日期不为空)

我同意,但您的要求不是可为null的列,所以您有两个选择,您可以截断表或允许现有记录为null值。。奇奇是你的。。