如何在一个业务繁忙的大表中增加一个并带有默认值的字段

 

方法来自Piner的新书《构建Oracle高可用环境》
1.先增加一个字段


sql>Alter TABLE TABLE_NAME ADD field_name NUMBER;
2.把该字段修改为有默认值


sql>Alter TABLE TABLE_NAME MODIFY field_name DEFAULT 0;
该语句并不修改以前的记录,只是标记以后的记录将会有默认值0,所以,这个语句的执行很快,不会引发阻塞。
3.修改以前的记录,让其有默认值(每修改1000条记录 commit一次)

DECLARE
       row_num NUMBER := 0;
BEGIN
       FOR c_test IN (SELECT ROWID rid FROM table_name t WHERE field_name IS NULL) LOOP
             UPDATE table_name t SET t.field_name = 0 WHERE ROWID = c_test.rid;
             row_num := row_num + 1;
             IF MOD(row_num,1000) =0 THEN
                  COMMIT;
             END IF;
        END LOOP;
        COMMIT;
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值