表级锁 · RX
ROW EXCLUSIVE
行排他锁
插入、更新和删除在目标表上取得的表级锁;多个事务可以同时持有。
冲突关系
以下只比较不同事务在同一个表上持有的锁。
纵轴是请求的锁,横轴是另一事务已经持有的锁;只比较同一对象。
取得此模式的命令
| SQL 命令 | 取得条件与说明 |
|---|---|
| INSERT | 在写入的目标表上加锁;新插入行不能简单等同于对已有行取得 FOR UPDATE。 |
| UPDATE | 目标表取得此模式;受影响的已有行另有行锁。 |
| DELETE | 目标表取得此模式;删除的已有行另有 FOR UPDATE 行锁。 |
| COPY … FROM | 在目标表上加锁并插入新行;不笼统列为对已有行取得 FOR UPDATE。 |
| MERGE | 目标表取得此模式;每个匹配分支是否加行锁以及锁强度由实际 INSERT / UPDATE / DELETE 动作决定。 |
| LOCK TABLE … IN ROW EXCLUSIVE MODE | 显式请求此表级模式;省略 IN … MODE 时默认为 ACCESS EXCLUSIVE。 |
| UPDATE(不修改键值) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| UPDATE(修改键值) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| MERGE … WHEN MATCHED THEN UPDATE(非键) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| MERGE … WHEN MATCHED THEN DELETE / UPDATE(键) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| INSERT … ON CONFLICT DO UPDATE(非键) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| INSERT … ON CONFLICT DO UPDATE(键) | 这个写入变体在目标表上取得 ROW EXCLUSIVE;对已有行的锁另按实际动作取得。 |
| INSERT(外键检查) | 原始写入命令在写入目标表上取得 ROW EXCLUSIVE;外键检查的 ROW SHARE 与 FOR KEY SHARE 则作用于被引用的表和行,不能混为同一对象。 |
| UPDATE(外键检查) | 原始写入命令在写入目标表上取得 ROW EXCLUSIVE;外键检查的 ROW SHARE 与 FOR KEY SHARE 则作用于被引用的表和行,不能混为同一对象。 |
| COPY … FROM(外键检查) | 原始写入命令在写入目标表上取得 ROW EXCLUSIVE;外键检查的 ROW SHARE 与 FOR KEY SHARE 则作用于被引用的表和行,不能混为同一对象。 |
| MERGE(外键检查) | 原始写入命令在写入目标表上取得 ROW EXCLUSIVE;外键检查的 ROW SHARE 与 FOR KEY SHARE 则作用于被引用的表和行,不能混为同一对象。 |
链接指向本站 PostgreSQL 18 的 SQL 命令百科。命令也可能取得其他锁,查看完整命令关联表。
其他锁模式
数据来源
当前查看 PostgreSQL 18,采样构建 REL_18_STABLE · 753057e340da。冲突关系与命令行为按该版本的文档和源码整理。命令链接进入本站 SQL 命令百科,并保留所选版本。
资料核验日期:2026-09-26。