来自 SQL Server,我知道
MERGE
命令需要一些额外的注意,例如锁定提示才能成为原子操作,现在我开始使用 PostgreSQL。我现在想在 PostgreSQL 中使用 MERGE 命令,知道 SQL Server 中的问题,我做了一个快速研究并查看文档,看看 PostgreSQL 中的 MERGE
命令在设计上是原子的还是如果需要类似 SQL Server 上的东西。
如果有任何区别,该命令将不会直接使用,而是在存储过程中使用。目前使用 PostgreSQL 15。
好吧,我没有找到答案,只有一些博客在文本流中提到了一些内容,但没有具体的内容。
根据@AdrianKlaver提供的链接交易隔离我找到了我正在寻找的答案。
基于此文档
MERGE
PostgreSQL 中也不是原子的。他们明确指出,可以在 SELECT 阶段和 INSERT/UPDATE/DELETE 阶段之间修改行,如果 INSERT、UPDATE 和 DELETE 部分也涉及条件,则可能会导致不需要的结果。
简而言之,在使用 MERGE 时必须格外小心,并根据用例选择正确的隔离级别,就像在 MS SQL Server 中一样。