PostgreSQL:我需要在 CTE 中返回任何内容吗?

标签 postgresql return

我曾经听说 CTE(WITH 语句)需要返回一些东西。否则可能会发生不执行的情况。

我有以下 CTE 简化结构:

WITH
selectA AS (
    SELECT ...
),
insertA AS (
    INSERT INTO ...
    -- selecting something from selectA
    RETURNING ...
),
insertB AS (
    INSERT INTO ... 
    -- selecting something from selectA and insertA
    -- HERE no RETURNING!
),
selectB AS (
    SELECT ...
    -- selecting something from selectA and insertA
),
insertForms AS (
    INSERT INTO ...
    -- selecting something from selectB
    -- HERE no RETURNING!
),
insertFormData AS (
    INSERT INTO ...
    -- selecting something from selectB
    -- HERE no RETURNING!
)
SELECT ...
    -- selecting something from insertA and selectB

它有效,但我想知道我是否遇到了导致所有 CTE 部分都被执行的极端情况。 在 PostgreSQL 文档中,我没有找到 CTE 中是否需要返回部分的明确提示。

有人对此有好的想法吗? 非常感谢!

最佳答案

但我想知道我是否遇到了任何极端情况”- 该行为已被完整记录 in the manual

If RETURNING is omitted, the statement is still executed, but it produces no output so it cannot be referenced as a table by the primary query

关于PostgreSQL:我需要在 CTE 中返回任何内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968361/

相关文章:

postgresql - 有没有办法在 postgresql 中捕获延迟约束的异常?

qt - 无法创建查询 COPY PostgreSQL PQSQL 驱动程序

postgresql - 如何从 cron.d 运行 cronjob?

postgresql - 如何从 SQL 语法错误或从 libpq 执行异常中获取错误行/列号?

python - 如何在 Python 中返回解压后的列表?

java - 我真的很难弄清楚如何让我的 GUI 窗口显示数组中的值

postgresql:枚举和字符变化,更新

c++ - return 语句中的三元运算符

java - 返回枚举值时,Java 返回什么?值(value)还是引用?

c# - 如何通过正则表达式删除字符串中多余的回车和空格?