如何在一个业务繁忙的大表中增加一个并带有默认值的字段
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;
相关文章推荐
- mysql 表增加一个字段并设置默认值
- ireport 中如何增加一个计算字段
- 如何使用Drop删除带有默认值的字段
- 如何从原有的表中创建一个新表,并增加几个字段?
- 如何移动一个带有lob字段的表到另外一个表空间
- 给一个大表增加一个字段,带默认值
- 2.如何让一个项目的用户目前只能是姓名登录,优化为增加一个字段为姓名和用户名同时都可以实现登录 ,并且用户名不能使中文?
- mysql如何给一个数据库所有表都增加一个字段?
- 如何修改帝国cms文章点击量默认值和成倍增加
- 如何得到一个数据表的所有数字型字段???
- 如何成为一个好QA?从理解业务框架开始
- c#中如何才能实现为数据库表中的某个字段的默认值
- 一条数据更新的语句,如何将排序的序号写入本表中的一个字段中
- SAS篇-如何判断一个字段值是否为空?
- 如何定义带有一个模块的动态程序集
- MySQL中如何用一个表中的字段更新另一个表中字段
- DataGrid 列表中如何获取一个行中的某个字段值
- SD--如何在输出控制中增加自定义字段
- 在SQLite中如何用一个表的字段更新另一个表
- 如何 distinct 只对一个字段有用,同时查出其他字段