我喜欢对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';
*)这似乎是多余的:只保存最后一个。但是,我在表上定义了一个后触发器,因此在另一个表中创建了历史记录。因此,我需要多次更新。
答案 0 :(得分:1)
行肯定会按UPDATE
语句的顺序锁定。
此外,锁仅影响并发事务,因此如果所有UPDATE
都发生在一个数据库会话中,则不必害怕被锁阻塞。