为什么我收到此错误?
在 DDL 表中,我只有 2 列,id (number) 和 name (varchar)
ALTER TABLE mytable ADD SUSPEND date NOT NULL
ORA-01758: 表必须为空才能添加必填 (NOT NULL) 列 ORA-06512: 在第 7 行
为什么我收到此错误?
在 DDL 表中,我只有 2 列,id (number) 和 name (varchar)
ALTER TABLE mytable ADD SUSPEND date NOT NULL
ORA-01758: 表必须为空才能添加必填 (NOT NULL) 列 ORA-06512: 在第 7 行
ORA-01758:表必须为空才能添加必填 (NOT NULL) 列 ORA-06512: 在第 7 行
你的桌子是空的吗?我想不是。
可能有一种解决方法,包括将列添加为可为空,然后用非 NULL 值填充每一行,将列更改为not null
.
或者,由于问题是这些当前行将被赋予 NULL 作为默认值,并且列不允许为 NULL,因此您也可以使用默认值绕过它。来自Oracle 文档:
但是,如果您提供默认值,则可以将具有 NOT NULL 约束的列添加到现有表中;否则,执行 ALTER TABLE 语句时会引发异常。
这是一个小提琴,你怎么能做到
将来的日期是否可以作为临时违约接受?如果是这样,这将起作用:
ALTER TABLE MYTABLE ADD (SUSPEND_DATE DATE DEFAULT(TO_DATE('21000101', 'YYYYMMDD'))
CONSTRAINT SUSPEND_DATE_NOT_NULL NOT NULL);
如果表已经包含记录,则表将不允许添加“非空”列。如果您需要相同,则为列设置默认值或截断表,然后尝试。