postgres 在 UPDATE ... RETURNING 查询中使用隐式事务吗?

问题描述 投票:0回答:1

有人可以告诉我 Postgres 15 是否使用隐式事务进行

UPDATE...RETURNING
查询吗?

例如,两个查询之间有什么区别吗

BEGIN;
UPDATE counter
SET value = value + 1
RETURNING value;
COMMIT;

UPDATE counter
SET value = value + 1
RETURNING value;

表格如下

CREATE TABLE IF NOT EXISTS counter
(
    value      bigint PRIMARY KEY NOT NULL DEFAULT 0,
    updated_at TIMESTAMPTZ        NOT NULL DEFAULT CURRENT_TIMESTAMP
);
postgresql
1个回答
0
投票

文档(第57页),您可以阅读:

PostgreSQL 实际上将每条 SQL 语句都视为正在执行 在一笔交易内。如果您不发出 BEGIN 命令,则每个 单个语句具有隐式 BEGIN 和(如果成功)COMMIT 缠绕在它周围。由 BEGIN 和 包围的一组语句 COMMIT 有时也称为事务块

这意味着包括

UPDATE
在内的所有交易都将被视为交易,而无需显式指定它们。

© www.soinside.com 2019 - 2024. All rights reserved.