转贴杨大师yangtingkun_如何为table快速添加一个默认值的新列

附上杨大师的文章链接快速增加表新加列的默认值的方法

下为自己测试示例:
2012年3月30日 星期五 11时53分



SQL> conn scott/system
已连接。
SQL> create table t_add_newcol(a int,b int);

表已创建。

SQL> insert into t_add_newcol values(1,1);

已创建 1 行。

SQL> insert into t_add_newcol values(2,2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t_add_newcol;

         A          B
---------- ----------
         1          1
         2          2

SQL> alter table t_add_newcol add new_c int;

表已更改。

SQL> select * from t_add_newcol;

         A          B      NEW_C
---------- ---------- ----------
         1          1
         2          2

SQL> alter table t_add_newcol modify  new_c int default 8;

表已更改。

//表明执行添加默认值的新列后,原有记录不会发生变化,新添列还是空null
SQL> select * from t_add_newcol;

         A          B      NEW_C
---------- ---------- ----------
         1          1
         2          2



SQL> insert into t_add_newcol values(3,3,default)
  2  ;

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t_add_newcol;

         A          B      NEW_C
---------- ---------- ----------
         1          1
         2          2
         3          3          8 

SQL> insert into t_add_newcol(a,b) values(4,4);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t_add_newcol;

         A          B      NEW_C
---------- ---------- ----------
         1          1
         2          2
         3          3          8
         4          4          8


//通过视图实现向表中添加默认值新列后,让新添列显示(添加列前后)默认值
SQL> create view view_add_newcol
  2  (a,b,new_c)
  3  as
  4  select a,b,nvl(new_c,8) from t_add_newcol;

视图已创建。

SQL> select * from view_add_newcol;

         A          B      NEW_C
---------- ---------- ----------
         1          1          8
         2          2          8
         3          3          8
         4          4          8


小结:
 1,视图可以很好的使用,用得好,实利于工作
     2,在生产系统中,重大操作要分批次进行,比如上述的ddl分多批次进行,这样
  对业务影响减小
    3,基本概念掌握相当重要,这样才会有更精细的方案.防止操作失误出现
请使用浏览器的分享功能分享到微信等