我们说,我们有下表my_table:
id Col1 Col2
1 some data some data
2 some data some data
3 some data some data
4 some data some data
另外,让我们假设存在表的更新过程,并且在执行之后,表以最少的行数结束。
我们希望迭代此过程,直到“my_table”没有行。可以肯定的是,在更新过程的有限次迭代之后,该表具有零行。
尝试这样做是否正确:
while (select count(id) from my_table) != 0 loop
update process
...;
end loop;
答案 0 :(得分:1)
您需要添加事务以使其可靠,否则您无法保证某些其他用户或进程在计算它们之后但在更新运行之前不会添加行。你真的需要:
while not done
begin transaction
if (count rows > 0)
do something that expects rows
else
done
end transaction