Postgresql 博士后:while;表中有行“;环
比如说,我们有下表my_表:Postgresql 博士后:while;表中有行“;环,postgresql,while-loop,is-empty,Postgresql,While Loop,Is Empty,比如说,我们有下表my_表: 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”没有行为止。可以肯定的是,在更新过程的有限次迭代之后,表中没有行 这样做有多正确:
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;
您需要添加事务以使其可靠,否则您无法保证其他用户或进程不会在您计算它们之后但在更新运行之前添加行。您实际上需要:
while not done
begin transaction
if (count rows > 0)
do something that expects rows
else
done
end transaction
SQL中的更新不会删除记录,它们(可能)会修改已存在记录中的数据。是的,你说得对。我没有提到更新过程不仅涉及“My_表”,还涉及“other_表”。更新后者会导致第一行中的行数减少。谢谢你的评论,但下面的答案抓住了要点。