PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक विदेशी कुंजी के रूप में एक कॉलम जोड़ने से विदेशी कुंजी बाधा में संदर्भित त्रुटि कॉलम मौजूद नहीं है

एक कॉलम में एक बाधा जोड़ने के लिए इसे पहले तालिका में मौजूद होना चाहिए 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);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या कई-से-अनेक संघों के लिए तालिका में शामिल होने के लिए कोई विकल्प हैं?

  2. आप psql में स्क्रिप्ट चर का उपयोग कैसे करते हैं?

  3. Postgres में पुनरावर्ती JSON कुंजी एकत्र करें

  4. PostgreSQL डेटाबेस बनाना

  5. क्या INSERT RETURNING चीजों को सही क्रम में वापस करने की गारंटी है?