您的位置:首页 > 其它

ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空

2010-12-07 12:26 1771 查看
给一个已经有记录的表添加新列,并指定not null 时报ORA-01758。怎么办?

1.给新添加的列指定默认值。

2.清空表中的记录再添加新列。

实验如下:

SQL> drop table ord;
Table dropped

SQL> create table ORD
2  (
3    ORD_NO   NUMBER(2) not null,
4    ORD_DATE DATE,
5    CUST_ID  NUMBER(4)
6  );

Table created

SQL> insert into ORD values(1,sysdate ,100);

1 row inserted

SQL> COMMIT;

Commit complete

--表中有记录,添加新列,并指定not null时报ORA-01758

SQL> ALTER TABLE ORD ADD price NUMBER(8,2) NOT NULL;

ALTER TABLE ORD ADD price NUMBER(8,2) NOT NULL

ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空

-- 给新列指定默认值,可以添加。

SQL> ALTER TABLE ORD ADD price NUMBER(8,2) DEFAULT 0 NOT NULL;

Table altered

--清空表中的记录,可以不指定默认值。这种比较少用。
SQL> TRUNCATE TABLE ORD;

Table truncated

SQL> alter table ORD drop column PRICE;

Table altered

SQL> ALTER TABLE ORD ADD price NUMBER(8,2) NOT NULL;

Table altered

SQL>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐