Oracle中表添加带有默认值列的讨论(包括12C新特性)
2015-01-31 22:32
471 查看
这个问题是我一直都在关注的问题。
11G关于这个问题已经有了改善,到了12C更是多了一些新特性
关于11G的新特性讨论,参考我这篇博客http://blog.csdn.net/dbcrocodile/article/details/21170407
12C关于这方面是在11G新特性上进行添加的。
11G中添加一列并设置默认值,不会对表中实际数据做更改,而是通过对数据字典中做标记
我们查询的时候,会对新列做一个类似nvl()之类的操作,如果是null,则返回默认的数值。
但是,看如下语句
SQL> alter table t add MrDai number default 10000 not null;
Table altered.
Elapsed: 00:00:00.34
在11G中,新加一列必须是NOT NULL属性,否则将无法实现该特性。依然会造成超大DDL事务,hang死关于该表的一切操作(包括select)。
如果不明白该特性,很容易以为有了特性,而贸然添加,造成非常严重的事故。
而12C中,对这一特性再次做出了加强,我们这里可以不用设置not null,极大减少了可能的误操作
看如下实验过程
创建表t,其中100多万行数据。
SQL> select count(*) from t;
COUNT(*)
----------
1454256
对表直接增加一列(不设置not null)
SQL> alter table t add MrDai1 number default 10000;
Table altered.
Elapsed: 00:00:00.03
速度飞快。当然,和11G中一样
在设置完成以后,如果是新插入的行,在默认值列,会将数据真正的插入到行
11G关于这个问题已经有了改善,到了12C更是多了一些新特性
关于11G的新特性讨论,参考我这篇博客http://blog.csdn.net/dbcrocodile/article/details/21170407
12C关于这方面是在11G新特性上进行添加的。
11G中添加一列并设置默认值,不会对表中实际数据做更改,而是通过对数据字典中做标记
我们查询的时候,会对新列做一个类似nvl()之类的操作,如果是null,则返回默认的数值。
但是,看如下语句
SQL> alter table t add MrDai number default 10000 not null;
Table altered.
Elapsed: 00:00:00.34
在11G中,新加一列必须是NOT NULL属性,否则将无法实现该特性。依然会造成超大DDL事务,hang死关于该表的一切操作(包括select)。
如果不明白该特性,很容易以为有了特性,而贸然添加,造成非常严重的事故。
而12C中,对这一特性再次做出了加强,我们这里可以不用设置not null,极大减少了可能的误操作
看如下实验过程
创建表t,其中100多万行数据。
SQL> select count(*) from t;
COUNT(*)
----------
1454256
对表直接增加一列(不设置not null)
SQL> alter table t add MrDai1 number default 10000;
Table altered.
Elapsed: 00:00:00.03
速度飞快。当然,和11G中一样
在设置完成以后,如果是新插入的行,在默认值列,会将数据真正的插入到行
相关文章推荐
- Oracle中表添加带有默认值列的讨论(包括11G新特性)
- Oracle Enterprise Manager 12c 新特性:实时Real-Time Addm
- 数据库oracle 【临时UNDO】12c新特性
- Oracle 数据库12c 16大新特性总结
- Oracle DB 12c 新特性
- Oracle GoldenGate 12c 新特性
- Oracle11新特性——在线操作功能增强之表增加包含默认值的字段
- Oracle 数据库12c新特性总结(四)
- Oracle 12c 新特性之 In-Database Archiving
- Oracle 12c 新特性之 Multitenant Architecture (五)
- Oracle 数据库12c新特性总结(二)
- 全面学习和应用ORACLE ASM特性--添加和修改asm磁盘组
- Oracle 12C的十二个新特性
- SQL 2005 添加带有默认值的列
- Oracle 12c 新特性之 table recovery from rman backups
- Oracle中添加Date的默认值
- Oracle Enterprise Manager 12c 新特性:实时Real-Time Addm
- 解读 Oracle 12c 的 12 个新特性
- Oracle 数据库12c 16大新特性总结
- Oracle 数据库12c新特性总结(三)