You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中事务内Delete/Insert操作的原子性及可见性问题

事务中DELETE全表+INSERT单行的原子性与Read Committed隔离级别下的读取情况

1. 操作是否具备原子性

是的,同一个事务内的DELETE FROM 表名和INSERT INTO 表名 (...) VALUES (...)操作具备原子性。
数据库事务的原子性(Atomicity)保证了事务内的所有操作要么全部成功提交,要么全部回滚。只要这两个操作在同一个事务中执行,就不会出现只完成DELETE未完成INSERT,或者只完成INSERT未完成DELETE的情况——要么最终表中是删除所有行后插入的单行数据,要么回到事务执行前的原始状态。

2. Read Committed隔离级别下是否会出现读取者看到表中有两行的情况

不可能出现由该事务操作导致的“表中有两行”的读取结果,具体原因如下:

  • Read Committed是大多数数据库的默认隔离级别,其核心规则是读取只能看到已提交事务的数据,不会看到未提交事务的任何中间修改。
  • 在该事务提交前,其他读取者看不到这个事务的DELETE和INSERT操作,只能看到事务执行前的表状态(比如如果原表原本有两行,读取者会看到这两行,但这不是该事务操作后的结果)。
  • 当该事务提交后,DELETE和INSERT操作会同时生效,读取者看到的是删除所有行后插入的单行数据,不会看到“删除后空表+新插入行”的中间状态,更不会出现两行的情况。

内容的提问来源于stack exchange,提问作者Maris Orbidans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:10:00