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

निम्नलिखित कथन पूर्ण होने तक CTE डिलीट प्रतिबद्ध नहीं है

यह अपेक्षित और प्रलेखित है।

मैनुअल से उद्धरण

आप कर सकते हैं कंपनी को हटाने के लिए जंजीर CTE का उपयोग करें:

with deleted_emp as (
  delete from employee 
  where id = 1 
  returning company_id, id as employee_id
)
delete from company
where id in (select company_id from deleted_emp) 
  and not exists (select * 
                  from employee e
                     join deleted_emp af 
                       on af.company_id = e.company_id 
                      and e.id <> af.employee_id) 

हाल ही में हटाए गए कर्मचारी को not exists . से बाहर करना महत्वपूर्ण है उप-क्वेरी के रूप में वह हमेशा दूसरे डिलीट स्टेटमेंट में दिखाई देगा और इस प्रकार मौजूद नहीं है कभी भी सत्य नहीं होगा। इसलिए उप-क्वेरी अनिवार्य रूप से जांचती है कि क्या उसी कंपनी को सौंपे गए हटाए गए कर्मचारी के अलावा कोई अन्य कर्मचारी है।

ऑनलाइन उदाहरण:https://rextester.com/IVZ78695



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL13 में अपग्रेड करना

  2. वस्तु JSONB के भीतर सरणी से तत्व निकाला जा रहा है

  3. JSON का क्वेरी संयोजन विषम परिणाम देता है

  4. PostgreSQL में विरासत में मिली तालिकाओं का उपयोग कब करें?

  5. समयक्षेत्र जागरूक date_trunc समारोह