यह अपेक्षित और प्रलेखित है।
आप कर सकते हैं कंपनी को हटाने के लिए जंजीर 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