0
복합 유형 typname
이 주어지면 유형 oids
을 재귀 적으로 찾으십니까??WITH RECURSIVE를 사용하여 모든 복합 유형 구성 요소 유형 찾기
예 :
CREATE TYPE t_station AS (x INT,
y INT,
label VARCHAR);
CREATE TYPE t_address AS (city VARCHAR,
street VARCHAR,
no INT,
stations t_station[]);
CREATE TYPE t_employee AS (name VARCHAR,
age INT,
coins INT[],
notes VARCHAR,
address t_address);
나는 유형 t_employee
의 구성원의 oids
얻을 수 있습니다 :
SELECT
t.typname, t.oid, a.attname, a.atttypid
FROM
pg_attribute a INNER JOIN pg_type t ON a.attrelid = t.typrelid
AND t.typname = 't_employee'
하지만 내가 WITH RECURSIVE
을 사용하여 수행 할 수 있습니다 생각하는 것을 재귀해야
WITH RECURSIVE allattrs(typname, oid, attname, atttypid) AS (
select t.typname, t.oid, a.attname, a.atttypid from pg_attribute a inner join pg_type t on a.attrelid = t.typrelid and t.typname = 't_employee'
union all
select z.* from
(select t.typname, t.oid, a.attname, a.atttypid from pg_attribute a inner join pg_type t on a.attrelid = t.typrelid) z,
allattrs y where y.atttypid = z.oid
)
SELECT * FROM allattrs limit 100
;
하지만 내부 ar을 찾지 못했습니다. ray of t_station
복합 형.
아, 멋지다! 정확히 내가 필요로하는 것. 방금 재귀 CTE를 사용하기 시작했고 거기에 학습 곡선이 있습니다. 그러나 PG의 기능은 정말 대단합니다! – oberstet