Evg*_*kii 1 postgresql transactions with-statement
我在 WITH 语句中做了很多查询。他们应该在一笔交易中。我应该在交易中明确涵盖我的大查询还是没有必要?
这是我的查询的粗略示例:
WITH
remains_actual AS (
SELECT
...
)
affected_remains AS (
INSERT INTO
...
ON CONFLICT (...) DO UPDATE SET
...
RETURNING
...
)
affected_products AS (
SELECT DISTINCT
...
)
INSERT INTO
....
Run Code Online (Sandbox Code Playgroud)
从文档:
PostgreSQL 实际上将每个 SQL 语句视为在事务中执行。如果您不发出 BEGIN 命令,则每个单独的语句都有一个隐式 BEGIN 和(如果成功)围绕它的 COMMIT。
一条WITH语句仍然算作单个语句,因此它将在隐式事务块中运行。
您可以使用一些返回当前事务 ID 的 CTE 自己测试:
with
tx1 as (select txid_current()),
tx2 as (select txid_current())
select * from tx1, tx2;
txid_current | txid_current
--------------+--------------
12814 | 12814
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |