Postgres是否保证按提供的update-statements的顺序锁定行?

时间:2017-06-04 22:06:51

标签: postgresql

我喜欢对Postgres进行批量更新。有时,批处理可能包含对同一记录的update-statements。 (*)

为此,我需要确保Postgres根据update-statements的提供顺序锁定行。

这有保证吗?

要清楚,我正在发送一系列单行更新语句,因此不是单个多行更新语句。例如:

update A set x='abc', dt='<timeN>' where id='123'; 
update A set x='def', dt='<timeN+1>' where id='123'; 
update A set x='ghi', dt='<timeN+2>' where id='123'; 

*)这似乎是多余的:只保存最后一个。但是,我在表上定义了一个后触发器,因此在另一个表中创建了历史记录。因此,我需要多次更新。

1 个答案:

答案 0 :(得分:1)

行肯定会按UPDATE语句的顺序锁定。

此外,锁仅影响并发事务,因此如果所有UPDATE都发生在一个数据库会话中,则不必害怕被锁阻塞。