我需要拍摄一些表格行的快照(SELECT)以进行显示。这些行将永远不会在同一个事务中被修改或删除,或传输到可以修改这些行的另一个事务。我只想要在 Postgresql 函数中进行简单的类似快照的读取。
例如:
SELECT * FROM "my_table" WHERE "amount" < 1000;
我正在考虑在我的 Postgresql 函数中设置 READ COMMITTED 事务级别:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
这是否可以确保我的 SELECT 永远不会遇到异常,无论其他繁重而复杂的事务是否同时运行?我相信是的,但我不是 Postgresql 专家。
更新:
在做了更多阅读之后,我想知道这是否也可以解决问题?
SET TRANSACTION ISOLATION LEVEL READ ONLY DEFERRABLE