↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 锁百科 / 行级锁

行级锁 · FNKU

FOR NO KEY UPDATE

非键更新锁

用于不修改键值的更新;与键共享锁兼容,与其余行锁模式冲突。

当前稳定版

冲突关系

以下只比较不同事务在同一行上持有的锁。

与这些模式冲突 3

与这些模式兼容 1

纵轴是请求的锁,横轴是另一事务已经持有的锁;只比较同一对象。

取得此模式的命令

SQL 命令取得条件与说明
SELECT FOR NO KEY UPDATE作用于实际选中的行;目标表同时取得 ROW SHARE。NOWAIT / SKIP LOCKED 改变等待行为,不改变锁冲突规则。
UPDATE(不修改键值)没有取得 FOR UPDATE 的 UPDATE 使用此模式。此处的键列是可供外键引用的唯一索引列,不包括部分索引与表达式索引。
MERGE … WHEN MATCHED THEN UPDATE(非键)实际执行 UPDATE 分支且不需 FOR UPDATE 时;不能给所有 MERGE 分支统一套用一种行锁。
INSERT … ON CONFLICT DO UPDATE(非键)冲突路径锁住要更新的已有行;锁强度按 UPDATE 的键列规则确定,即使 DO UPDATE WHERE 排除更新也会锁行。

链接指向本站 PostgreSQL 18 的 SQL 命令百科。命令也可能取得其他锁,查看完整命令关联表。

其他锁模式

数据来源

当前查看 PostgreSQL 18,采样构建 REL_18_STABLE · 753057e340da。冲突关系与命令行为按该版本的文档和源码整理。命令链接进入本站 SQL 命令百科,并保留所选版本。

本站显式锁定手册 · 官方手册

查看采样源码与构建依据

资料核验日期:2026-09-26。