Questo è previsto e documentato.
puoi utilizzare CTE concatenati per eliminare l'azienda:
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)
È importante escludere il dipendente appena eliminato da not exists
sub-query in quanto sarà sempre visibile nella seconda istruzione delete e quindi non esiste non sarebbe mai vero. Quindi la sottoquery controlla essenzialmente se c'è un dipendente diverso da quello eliminato assegnato alla stessa azienda.
Esempio online:https://rextester.com/IVZ78695