【发布时间】:2017-06-04 22:06:50
【问题描述】:
我喜欢批量更新 Postgres。有时,批处理可能包含对同一记录的更新语句。 (*)
为此,我需要确保 Postgres 根据提供更新语句的顺序锁定行。
这是有保证的吗?
明确地说,我发送的是一系列单行更新语句,而不是单个多行更新语句。例如:
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';
*) 这似乎是多余的:只保存最后一个。但是,我在表上定义了一个后触发器,因此历史记录是在另一个表中创建的。因此我需要多次更新。
【问题讨论】:
-
如果这是单个事务,那么 postgres 只持有一个锁(假设
id是主键)
标签: postgresql