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

在PDO事务中INSERT后执行SELECT,能否查询到刚插入的变更数据?

结论

同一个数据库连接的同一个事务内,步骤4的SELECT查询必然可以读到步骤3刚插入的全部数据。

原因解释

这是所有支持事务的关系型数据库(MySQL、PostgreSQL等)都遵循的基础规则:本事务内部产生的未提交写入操作,对本事务的所有后续操作完全可见,不受事务隔离级别配置的影响。
事务隔离级别只会限制当前事务能不能读到其他事务的未提交/已提交数据,完全不会干涉同一个事务内部的操作可见性。
需要额外注意的是,只有在同一个PDO连接、同一个未提交的事务内才符合这个规则,如果中途新建了其他PDO连接执行查询,就会读不到未提交的插入数据。

额外优化建议

你当前的流程是先全量插入再查重再删除,数据量大的时候性能损耗比较高,可以考虑两种优化方案:

  • 给需要去重的字段加上唯一索引,插入时直接使用INSERT IGNORE或者ON DUPLICATE KEY UPDATE语法,直接在插入阶段就避免重复数据写入
  • 插入前在PHP层先对要插入的数千条数据做一次去重预处理,减少后续数据库操作的压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:42:02