यदि आपको अन्य RDBMS में पोर्टेबल होने के लिए इसकी आवश्यकता नहीं है तो यह बहुत है pg_catalog
. में कैटलॉग तालिकाओं का उपयोग करने के लिए तेज़ और आसान मानक सूचना स्कीमा के बजाय:
SELECT c.confrelid::regclass::text AS referenced_table
, c.conname AS fk_name
, pg_get_constraintdef(c.oid) AS fk_definition
FROM pg_attribute a
JOIN pg_constraint c ON (c.conrelid, c.conkey[1]) = (a.attrelid, a.attnum)
WHERE a.attrelid = '"Schema2"."TableB"'::regclass -- table name
AND a.attname = 'A_Id' -- column name
AND c.contype = 'f'
ORDER BY conrelid::regclass::text, contype DESC;
रिटर्न:
referenced_table | fk_name | fk_definition
------------------+-------------------------+----------------------------------------------
Schema1.TableA | b1_fkey | FOREIGN KEY ("B_id") REFERENCES "Schema1"."TableA"("A_id")
नोट
-
अतिरिक्त दो कॉलम केवल ओरिएंटेशन के लिए हैं। आपके Q के अनुसार, आपको केवल पहला कॉलम चाहिए।
-
यह सभी लौटाता है दिए गए कॉलम नाम से जुड़ी सभी विदेशी कुंजियों द्वारा संदर्भित टेबल - कई कॉलम पर FK बाधाओं सहित।
-
नाम स्वचालित रूप से स्कीमा-योग्य है या वर्तमान
search_path
. द्वारा निर्धारित दृश्यता के अनुसार नहीं है . जहां आवश्यक हो वहां नाम भी बच जाता है (अवैध या अपर केस वर्ण, आरक्षित शब्द, ...) स्वचालित रूप से भी।
pg_constraint
. का विवरण देखें और pg_attribute
मैनुअल में। और वस्तु पहचानकर्ता प्रकारों के बारे में भी अधिक।
संबंधित:
- अज्ञात नाम के साथ PostgreSQL ड्रॉप बाधा
- सभी PK और FK पुनर्प्राप्त करना