ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空
ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空
给一个已经有记录的表添加新列,并指定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>
评论暂时关闭