ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空
2010-12-07 12:26
1771 查看
给一个已经有记录的表添加新列,并指定not null 时报ORA-01758。怎么办?
1.给新添加的列指定默认值。
2.清空表中的记录再添加新列。
实验如下:
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>
相关文章推荐
- ORA-01758: table must be empty to add mandatory (NOT NULL) column
- 完美解决textarea输入框提示文字,必须添加默认内容
- oracle exp出现"ORA-00302:必须说明SET_NO_OUTLINES 组件" 解决方法
- ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
- 如何在博客中添加背景音乐(博客园必须获得脚本权限)
- CS0012: 类型“System.Web.Routing.RouteValueDictionary”在未被引用的程序集中定义。必须添加对程序集“System.Web.Routing, Version
- 添加ASM磁盘报错ORA-02097和ORA-15014
- 高级复制添加主体站点的时候碰到ORA-23375错误的解决方法
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- oracle建表后添加数据报错:ORA-01658:无法为表空间中的段创建INITIAL区
- 分享:c#和javascript函数的相互调用(ObjectForScripting 的类必须对 COM 可见。请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性。)
- ora-01847:月份中日的值必须介于 1 和当月最后一日之间
- ADO在查询视图时自动添加rowid,导致Ora 1445错误
- ORA-24005:必须使用DBMS_AQADM.DROP_QUEUE_TABLE删除队列表 的解决方法
- 必须添加此消息的 us_english 版本后,才能添加 '简体中文' 版本。
- Android Tips: 在给drawable中添加图片资源时,文件名必须全小写
- ORA-01440:要减小精度或标度,则要修改的列必须为空
- 编译器错误消息: CS0012: 类型 在未被引用的程序集中定义。必须添加对程序集 的引用
- 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Start(),然后才能执行添加到 SqlDependency 实例中的命令