批量更新
数据样例如下
id | name | flag
-----+-------+------
1 | c4ca4 | 1
2 | c81e7 | 1
3 | eccbc | 1
4 | a87ff | 1
5 | e4da3 | 1
6 | 16790 | 1
7 | 8f14e | 1
8 | c9f0f | 1
9 | 45c48 | 1
批量更新,写储存过程或函数实现每次更新10行数据,直至更新完毕。
(MySQL实现)。
MySQL实现
do $$
declare
tmp_id int;
tmp_rec record;
tmp_index integer;
tmp_flag boolean;
begin
tmp_id := 0; tmp_index := 0;
loop
tmp_flag := false;
tmp_index := tmp_index + 1;
for tmp_rec in select id from test where id>tmp_id order by id limit 10 loop
update test set flag=0 where id=tmp_rec.id;
tmp_flag:=true;
tmp_id := tmp_rec.id;
end loop;
raise notice '%,%', tmp_index,tmp_id;
if( false = tmp_flag ) then
return;
end if;
end loop;
end;
$$;