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

PostgreSQL में विदेशी कुंजी वाली पंक्तियां हटाएं

इसे स्वचालित करने के लिए, आप ON DELETE CASCADE के साथ विदेशी कुंजी बाधा को परिभाषित कर सकते हैं .
मैं के लिए मैनुअल उद्धृत करता हूं विदेशी कुंजी बाधाएं :

वर्तमान FK परिभाषा को इस तरह देखें:

SELECT pg_get_constraintdef(oid) AS constraint_def
FROM   pg_constraint
WHERE  conrelid = 'public.kontakty'::regclass  -- assuming public schema
AND    conname = 'kontakty_ibfk_1';

फिर ON DELETE ... add जोड़ें या संशोधित करें ON DELETE CASCADE . का भाग (बाकी सब कुछ वैसे ही सुरक्षित रखना) जैसे एक बयान में:

ALTER TABLE kontakty
   DROP CONSTRAINT kontakty_ibfk_1
 , ADD  CONSTRAINT kontakty_ibfk_1
   FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;

कोई ALTER CONSTRAINT नहीं है आज्ञा। एक ALTER TABLE . में बाधा को छोड़ें और फिर से बनाएं समवर्ती लेखन पहुंच के साथ संभावित दौड़ स्थितियों से बचने के लिए कथन।

जाहिर है ऐसा करने के लिए आपको विशेषाधिकारों की आवश्यकता है। ऑपरेशन एक ACCESS EXCLUSIVE लेता है टेबल पर लॉक करें kontakty और एक SHARE ROW EXCLUSIVE टेबल पर लॉक करें osoby

अगर आप ALTER नहीं कर सकते हैं तालिका, फिर हाथ से हटाना (एक बार) या ट्रिगर द्वारा BEFORE DELETE (हर बार) शेष विकल्प हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. docker-compose.yml से docker कंटेनर में संकुल स्थापित करें

  2. varchar के लिए array_agg () का उपयोग कैसे करें []

  3. रेल एसक्यूएल चयन कथन में स्थिरांक पर ध्यान नहीं देता

  4. वर्ण भिन्न प्रकारों के लिए लंबाई क्यों निर्दिष्ट करें

  5. हालिया रिलीज के साथ नई और विकसित पोस्टग्रेएसक्यूएल एंटरप्राइज़ सुविधाएं