我们创建了一个表格。在将数据填充到其中之后,我们更改了表格并创建了一个新列,例如“城市”。创建此列使其成为NOT NULL后,我们没有填充其中的任何数据。那么在CITY列中这种情况下行的值是什么?
答案 0 :(得分:1)
我们创建了一个表格。在将数据填充到其中之后,我们更改了表并创建了一个新列,即“CITY”。创建此列使其成为NOT NULL后,我们没有填充其中的任何数据。那么在CITY列中这种情况下行的值是什么?
不,你不能。
如果您直接尝试将 NOT NULL 约束的新列添加到包含行的现有表,则只会出现以下错误:
ORA-01758: table must be empty to add mandatory (NOT NULL) column
例如,
SQL> CREATE TABLE t AS SELECT LEVEL a FROM dual CONNECT BY LEVEL <=10;
Table created.
SQL>
SQL> ALTER TABLE t ADD (b NUMBER NOT NULL);
ALTER TABLE t ADD (b NUMBER NOT NULL)
*
ERROR at line 1:
ORA-01758: table must be empty to add mandatory (NOT NULL) column
SQL>
如果您尝试 ALTER 表和MODIFY添加NOT NULL约束,那么您将收到以下错误:
ORA-02296: cannot enable (LALIT.B_C) - null values found
例如,
SQL> DROP TABLE t PURGE;
Table dropped.
SQL>
SQL> CREATE TABLE t AS SELECT LEVEL a FROM dual CONNECT BY LEVEL <=10;
Table created.
SQL>
SQL> ALTER TABLE t ADD (b NUMBER);
Table altered.
SQL>
SQL> ALTER TABLE t
2 MODIFY (b NUMBER CONSTRAINT b_c NOT NULL);
MODIFY (b NUMBER CONSTRAINT b_c NOT NULL)
*
ERROR at line 2:
ORA-02296: cannot enable (LALIT.B_C) - null values found
因此,您无法在具有行的现有表上创建具有NOT NULL约束的新列。该表必须为空。