首页 > 解决方案 > 如何在 PostgreSQL 中锁定 SELECT?

问题描述

我习惯在 MySQL 中这样做:

INSERT INTO ... SELECT ...

这将锁定我的表SELECT

现在,我正在尝试在 PostgreSQL 中做类似的事情,在表中选择一组行,然后根据这些行值在其他表中插入一些内容。我想防止有过时的数据,所以我想知道如何SELECT在 PostgresSQL 中锁定一个。

标签: postgresqldatabase-locking

解决方案


无需显式锁定任何内容。一条SELECT语句将始终看到表的一致快照,无论它运行多长时间。

如果在启动之前锁定表以防止并发修改,结果将没有什么不同SELECT,但是您会不必要地损害并发性。

如果您需要多个查询来查看数据库的一致状态,请使用REPEATABLE READ隔离级别启动事务。然后事务中的所有语句将看到数据库的相同状态。


推荐阅读