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

पैरेंट-चाइल्ड रिलेशनशिप में सॉफ्ट डिलीट को कैस्केडिंग करने की विधि

कड़ाई से बोलते हुए, इस तरह के मूल्यों को कैस्केड करने का एकमात्र तरीका अद्यतन कैस्केड का उपयोग करना है। ऐसा करने के लिए वह , कॉलम "is_deleted" को एक अद्वितीय बाधा का हिस्सा होना चाहिए।

वह अकेला बहुत कठिन नहीं है। यदि company.id आपकी प्राथमिक कुंजी है, तो कॉलम {id, is_deleted} का युग्म भी अद्वितीय होगा। कॉलम की उस जोड़ी पर एक अद्वितीय बाधा आपको एक विदेशी कुंजी संदर्भ के माध्यम से अपडेट को कैस्केड करने की अनुमति देगी।

लेकिन वह आपके . में काम नहीं करेगा मामला, क्योंकि आपको संदर्भ मानों को भिन्न होने की अनुमति देने की आवश्यकता है संदर्भित मूल्यों से।

तो आपके मामले में, मुझे लगता है कि आपके पास तीन विकल्प हैं।

  • ट्रिगर
  • संग्रहीत प्रक्रियाएं
  • आवेदन कोड

उन सभी मामलों में, आपको अनुमतियों (शायद हटाने की अनुमति को रद्द करना) और उन मामलों पर ध्यान देना होगा जो आपके कोड से बच सकते हैं। उदाहरण के लिए, dbms कमांड-लाइन इंटरफ़ेस और GUI इंटरफ़ेस का उपयोग एप्लिकेशन कोड में बाधाओं को दूर करने के लिए और अनुमतियों के आधार पर, संग्रहीत प्रक्रियाओं में किया जा सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बंडल विफल - PostgreSQL क्लाइंट लाइब्रेरी नहीं ढूँढ सकता (libpq)

  2. तैयार कथन में '' (टाइमस्टैम्प) के साथ स्ट्रिंग कैसे पास करें?

  3. pg_dump --exclude-table के साथ अभी भी पृष्ठभूमि में वे टेबल शामिल हैं COPY कमांड जो इसे चलाता है?

  4. मूल्य सीमा द्वारा समूह

  5. DB2 से PostgreSQL में माइग्रेट करना - आपको क्या पता होना चाहिए