您的位置:首页 > 数据库 > Oracle

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

2011-05-02 00:34 274 查看
 

方法来自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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  table oracle null c