在oracle中一次只更新1000条记录

时间:2017-03-14 14:53:12

标签: oracle oracle11g bulk-operations

我是oracle的新手。我目前的情况是我需要添加一个NOT NULL列并将其值更新为'EE'。这是使用以下脚本完成的。

ALTER TABLE CSA.CSA_CALL_AUDIT ADD CSA_CALL_TYPE varchar2(10);
update CSA.CSA_CALL_AUDIT set CSA_CALL_TYPE = 'EE';
ALTER table CSA.CSA_CALL_AUDIT modify CSA_CALL_TYPE not null;

我的要求是一次只更新1000条记录。该表总共有39000条记录。

1 个答案:

答案 0 :(得分:0)

如果EE是默认值,这是进行此更改的最佳表现方式:

ALTER TABLE CSA.CSA_CALL_AUDIT ADD CSA_CALL_TYPE varchar2(10)
      default 'EE' not null;

Oracle在数据字典中做了一些魔术而根本没有触及行。 (至少在11g及以后,不确定他们是否更早地引入了此增强功能。)

但无论如何,39000条记录并不是大量的记录。如果您需要发出实际的UPDATE,请使用单个语句。它不会花很长时间。