是否为 CTE 和表名分配了某种优先级?例如,如果我有一个table_a
在公共模式中调用的表,并且我创建了一个名为table_a
using的 CTE 表WITH
,如果我table_a
在SELECT
查询中使用,将采用哪个表?
--as an example
CREATE TABLE table_a (
id serial
);
WITH table_a AS (
SELECT id
FROM another_table
)
SELECT *
FROM table_a --> which table is this ?
;
PostgreSQL 搜索 CTE 命名空间
scanNameSpaceForCTE
作为它在searchRangeTableForRel
如果没有架构
如果没有命名空间,这类似于变量阴影,以及规范的其他要求。
PostgreSQL 中的所有内容都有一个命名空间,如果您想将表与 CTE 进行比较,请考虑提供(限定)命名空间。