行级锁 · FU
FOR UPDATE
行更新锁
最强的行锁模式;与同一行的全部行锁模式冲突,用于删除和可能修改键值的更新。
冲突关系
以下只比较不同事务在同一行上持有的锁。
与这些模式兼容 0
- 与同一作用域的所有模式冲突。
纵轴是请求的锁,横轴是另一事务已经持有的锁;只比较同一对象。
取得此模式的命令
| SQL 命令 | 取得条件与说明 |
|---|---|
| SELECT FOR UPDATE | 作用于实际选中的行;目标表同时取得 ROW SHARE。NOWAIT / SKIP LOCKED 改变等待行为,不改变锁冲突规则。 |
| UPDATE(修改键值) | 修改可供外键引用的唯一索引列时使用;部分索引和表达式索引不算在内。 |
| DELETE | 在被删除的已有行上取得此模式;目标表同时取得 ROW EXCLUSIVE。 |
| MERGE … WHEN MATCHED THEN DELETE / UPDATE(键) | 实际删除或更新键列的匹配行;纯插入分支不适用。 |
| INSERT … ON CONFLICT DO UPDATE(键) | 冲突路径修改键列时,锁住冲突的已有行;不是普通 INSERT 的固定行锁。 |
链接指向本站 PostgreSQL 18 的 SQL 命令百科。命令也可能取得其他锁,查看完整命令关联表。
其他锁模式
数据来源
当前查看 PostgreSQL 18,采样构建 REL_18_STABLE · 753057e340da。冲突关系与命令行为按该版本的文档和源码整理。命令链接进入本站 SQL 命令百科,并保留所选版本。
资料核验日期:2026-09-26。