Detta förväntas och dokumenteras.
Du kan använd kedjade CTE:er för att ta bort företaget:
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)
Det är viktigt att utesluta den nyss raderade medarbetaren från not exists
underfrågan eftersom den alltid kommer att vara synlig i den andra delete-satsen och därför skulle not exists aldrig vara sant. Så underfrågan kontrollerar i huvudsak om det finns en annan anställd än den borttagna som är tilldelad samma företag.
Onlineexempel:https://rextester.com/IVZ78695