एक कॉलम में एक बाधा जोड़ने के लिए इसे पहले तालिका में मौजूद होना चाहिए Postgresql में कोई कमांड नहीं है जिसका आप उपयोग कर सकते हैं जो कॉलम को जोड़ देगा और एक ही समय में बाधा जोड़ देगा। यह दो अलग-अलग कमांड होने चाहिए। आप इसे निम्न आदेशों का उपयोग करके कर सकते हैं:
पहले ऐसा करें:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
मैं integer
. का उपयोग करता हूं यहाँ टाइप करें लेकिन यह उसी प्रकार का होना चाहिए id
auth_user
. का कॉलम टेबल।
फिर आप बाधा जोड़ें
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
इस आदेश का एक भाग नामकरण है आपकी बाधा इसलिए यदि आपको बाद में इसे किसी ऐसे उपकरण के साथ दस्तावेज करने की आवश्यकता है जो आपका मॉडल बनाता है तो आपके पास यादृच्छिक नाम के बजाय नामित बाधा होगी।
साथ ही यह प्रशासकों के उद्देश्यों को भी पूरा करता है इसलिए एक डीबीए को पता है कि बाधा उस तालिका से है।
आमतौर पर हम इसे कुछ संकेत के साथ नाम देते हैं कि यह कहां से आया है और यह आपके मामले के संदर्भ में कहां है fk_links_chatpicmessage_auth_user
इसलिए जो कोई भी इस नाम को देखता है उसे पता चल जाएगा कि यह बाधा क्या है, यह जानने के लिए INFORMATION_SCHEMA पर जटिल क्वेरी किए बिना।
संपादित करें
जैसा कि @ btubbs के उत्तर द्वारा बताया गया है, आप वास्तव में एक कमांड में एक बाधा के साथ एक कॉलम जोड़ सकते हैं। इस तरह:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);