给一个已经有记录的表添加新列,并指定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>
PL/SQL Developer工具优化一例RAC安装外传之配置ssh用户等价相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)