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

कैस्केड बाधाओं को हटाने पर कैसे जोड़ें?

मुझे पूरा यकीन है कि आप केवल on delete cascade नहीं जोड़ सकते हैं मौजूदा विदेशी कुंजी बाधा के लिए। आपको पहले बाधा को छोड़ना होगा, फिर सही संस्करण जोड़ना होगा। मानक SQL में, मेरा मानना ​​है कि ऐसा करने का सबसे आसान तरीका है

  • लेन-देन शुरू करें,
  • विदेशी कुंजी छोड़ें,
  • एक विदेशी कुंजी जोड़ें on delete cascade , और अंत में
  • लेन-देन करें

प्रत्येक विदेशी कुंजी के लिए दोहराएं जिसे आप बदलना चाहते हैं।

लेकिन PostgreSQL में एक गैर-मानक एक्सटेंशन है जो आपको एकल SQL कथन में एकाधिक बाधा खंड का उपयोग करने देता है। उदाहरण के लिए

alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
   foreign key (gid)
   references games(gid)
   on delete cascade;

यदि आप उस विदेशी कुंजी बाधा का नाम नहीं जानते हैं जिसे आप छोड़ना चाहते हैं, तो आप या तो इसे pgAdminIII में देख सकते हैं (बस तालिका के नाम पर क्लिक करें और DDL देखें, या पदानुक्रम का विस्तार करें जब तक कि आप "बाधाएं" न देखें), या आप सूचना स्कीमा को क्वेरी कर सकते हैं।

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  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. sqlalchemy का उपयोग करके postgresql से कनेक्ट करते समय त्रुटि

  3. जब मैं एक कुंजी द्वारा एकत्रित करता हूं तो मैं निर्भर कॉलम को 'ग्रुप बाय' से बाहर क्यों नहीं कर सकता?

  4. PHP pg_connect () के साथ PostgreSQL से कनेक्ट नहीं हो सकता

  5. सबसे अच्छा PostgreSQL GUI कौन सा है? 2021 तुलना