[PostgreSQL] PostgreSQL์์ ํน์ ํ ์ด๋ธ์ด ์ฐธ์กฐํ๋ ์ธ๋ ํค ์ด๋ฆ ํ์ธํ๊ธฐ
ํน์ ํ ์ด๋ธ์ด ์ฐธ์กฐํ๋ ์ธ๋ ํค ๊ด๊ณ๋ฅผ ํ์ธํ๋ ์ฟผ๋ฆฌ
SELECT conrelid::regclass AS table_name,
conname AS constraint_name,
confrelid::regclass AS referenced_table
FROM pg_constraint
WHERE contype = 'f' AND conrelid = 'your_table_name'::regclass;
[conrelid]
์ ์ฝ์ด ๊ฑธ๋ ค ์๋ ํ ์ด๋ธ์ OID(Object Identifier)์ด๋ค.
conrelid::regclass๋ก ํด๋น ํ ์ด๋ธ ์ด๋ฆ์ ์กฐํํ ์ ์๋ค.
[confrelid]
์ธ๋ ํค๊ฐ ์ฐธ์กฐํ๋ ๋์ ํ ์ด๋ธ์ OID์ด๋ค.
confrelid::regclass๋ก ์ฐธ์กฐ ๋์ ํ ์ด๋ธ ์ด๋ฆ์ ์กฐํํ ์ ์๋ค.
[pg_constraint]
PostgreSQL์์ ํ ์ด๋ธ ๊ฐ์ ์ ์ฝ ์กฐ๊ฑด(Constraint)์ ๊ด๋ฆฌํ๋ ์์คํ ์นดํ๋ก๊ทธ ํ ์ด๋ธ์ด๋ค.
์ธ๋ ํค, ๊ธฐ๋ณธ ํค, ๊ณ ์ ํค, ์ฒดํฌ ์ ์ฝ ๋ฑ์ ์ ์ฅํ๊ณ ์๋ค.
[contype = 'f']
contype์ ์ ์ฝ์ ์ ํ์ ๋ํ๋ด๋๋ฐ, 'f'๋ ์ธ๋ ํค(Foreign Key)๋ฅผ ์๋ฏธํ๋ค.
๋ฐ๋ผ์ ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด๋ง ์กฐํํ๋ค.
['your_table_name'::regclass]
์ฌ๊ธฐ์๋ your_table_name์ ์ค์ ํ ์ด๋ธ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ด ์ฌ์ฉํ๋ค.
์ด ๋ถ๋ถ์ ์ฟผ๋ฆฌ์์ conrelid๋ฅผ ํด๋น ํ ์ด๋ธ์ OID๋ก ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์์ SQL
SELECT conrelid::regclass AS table_name,
conname AS constraint_name,
confrelid::regclass AS referenced_table
FROM pg_constraint
WHERE contype = 'f' AND conrelid = 'orders'::regclass;
์คํ ๊ฒฐ๊ณผ ์์
table_name | constraint_name | referenced_table
-------------------------------------------------------
orders | orders_user_id_fkey | users
orders | orders_product_id_fkey | products