postgresql - 如何在 PostgreSQL 中锁定 SELECT?
问题描述
我习惯在 MySQL 中这样做:
INSERT INTO ... SELECT ...
这将锁定我的表SELECT
。
现在,我正在尝试在 PostgreSQL 中做类似的事情,在表中选择一组行,然后根据这些行值在其他表中插入一些内容。我想防止有过时的数据,所以我想知道如何SELECT
在 PostgresSQL 中锁定一个。
解决方案
无需显式锁定任何内容。一条SELECT
语句将始终看到表的一致快照,无论它运行多长时间。
如果在启动之前锁定表以防止并发修改,结果将没有什么不同SELECT
,但是您会不必要地损害并发性。
如果您需要多个查询来查看数据库的一致状态,请使用REPEATABLE READ
隔离级别启动事务。然后事务中的所有语句将看到数据库的相同状态。
推荐阅读
- python - 遍历目录/文件夹中的文件,过滤它们,然后逐行读取它们的信息
- javascript - Webpack 在其他组件中包含 jQuery
- javascript - 使用 Firestore 查询发送值
- python - 您如何在生产中结合 Fixtures Flask 迁移?
- eclipse - 无法在 Eclipse 中启动自由配置文件
- c# - 如何在 CSharp 中制作自己的许可证密钥
- reactjs - 在 'react-responsive-carousel' React 中加载动态图像(使用 API 获取)
- python-3.x - 我有一个关于从 Postgresql 中提取表名的问题
- node.js - How to deal with users updating the same MongoDB document
- java - 实现游戏循环并请求用户输入