给一个已经有记录的表添加新列,并指定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>