DROP一个不可为空的列

时间:2015-05-22 06:32:01

标签: sql oracle constraints

我使用ORACLE,我知道你不能DROP一个非空约束的列。

您必须先将其更改为可以为空,然后您可以删除它。

如果列不是主键或外键,为什么我不能删除它?

有人可以解释这种行为的原因吗?

1 个答案:

答案 0 :(得分:3)

  

我使用ORACLE,我知道你不能DROP一个非空约束的列。

不,你错了。您可以删除 NOT NULL 列。

  

如果列不是主键或外键,为什么我不能删除它?

是的,你可以。

请参阅:

SQL> CREATE TABLE t(a number, b varchar2(10) not null);

Table created.

SQL>
SQL> INSERT INTO t(A, b) VALUES(1, 'one');

1 row created.

SQL>
SQL> SELECT * FROM t;

         A B
---------- ----------
         1 one

SQL>
SQL> ALTER TABLE t DROP COLUMN b;

Table altered.

SQL>
SQL> DESC t;
 Name                                      Null?    Type
 ----------------------------------------- -------- ------
 A                                                  NUMBER

SQL>
SQL> SELECT * FROM t;

         A
----------
         1

SQL>