CASE1:
यदि आपको एक नई तालिका बनाते समय विदेशी कुंजी बनाने की आवश्यकता है
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
उपर्युक्त आदेश 'तालिका 1' नाम से एक तालिका बनाएंगे और तीन कॉलम 'आईडी' (प्राथमिक कुंजी), 'कॉलम 1', 'टेबल 2_आईडी' (टेबल की विदेशी कुंजी जो टेबल 2 के आईडी कॉलम को संदर्भित करते हैं) नाम से बनाएंगे।
DATATYPE 'सीरियल' इस डेटाटाइप का उपयोग एक ऑटो-जनरेट किए गए कॉलम के रूप में करेगा, जब तालिका में मान सम्मिलित करने की आवश्यकता होती है, तो आपको इस कॉलम का उल्लेख नहीं करना चाहिए, या आप मूल्य स्थान पर उद्धरण के बिना 'डिफ़ॉल्ट' दे सकते हैं।
एक प्राथमिक कुंजी कॉलम हमेशा 'tablename_pkey' मान के साथ तालिका के सूचकांक में जोड़ा जाता है।
यदि तालिका निर्माण के समय में विदेशी कुंजी जोड़ी जाती है, तो पैटर्न के साथ A CONSTRAINT जोड़ा जाता है '(present_table_name) _ (Foreign_key_id_name) _fkey'।
एक विदेशी कुंजी जोड़ते समय, हमें कॉलम नाम के आगे 'संदर्भ' इनपुट करना पड़ता है क्योंकि हम पोस्टग्रेट्स को यह बताना चाहते हैं कि यह कॉलम एक तालिका का संदर्भ देता है और फिर संदर्भों के आगे हमें संदर्भ के लिए तालिका देना है और कोष्ठक में देना है। संदर्भित तालिका का कॉलम नाम, आमतौर पर विदेशी कुंजी प्राथमिक कुंजी कॉलम के रूप में दिया जाता है।
मामले 2:
यदि आप मौजूदा कॉलम पर मौजूदा तालिका में विदेशी कुंजी चाहते हैं
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
नोट: कोष्ठक '()' के बाद कुंजी चिह्न और संदर्भ टैबेल 2 अनिवार्य हैं अन्यथा पोस्टग्रेज त्रुटि को फेंक देंगे।