在修改表结构时,有时候会涉及到添加默认值。
下面是在11.2.0.3版本数据库中进行测试的结果:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
Connected as borpt
SQL> set timing on
SQL> select count(1) from user_mark_resultt;
COUNT(1)
———-
1451535
Executed in 0.219 seconds
当前数据量为145万
操作方法1:先增加表列,再修改默认值
SQL> alter table user_mark_resultadd name2 varchar2(10) ;
Table altered
Executed in 0.047 seconds
SQL> alter table user_mark_result modify name2 default ‘a’;
Table altered
Executed in 0.063 seconds
操作方法2:直接增加表列并赋予默认值
SQL> alter table user_mark_result add name3 varchar2(10) default ‘a’ ;
Table altered
Executed in 45.86 seconds
结果如下:
SQL> select t.dealerid,t.name2,t.name3 from user_mark_result t where rownum<5;
DEALERID NAME2 NAME3
—————————— ———- ———-
DL0120100619 a
DL0120100621 a
DL0120100628 a
DL0120100904 a
Executed in 0.062 seconds
通过以上比较可知:
1.为表增加字段后,再修改默认值,已存在的数据不受影响
2.增加字段语句中同时为字段添加默认值,需要较长时间的锁表&#x