Ceci est attendu et documenté.
Vous pouvez utilisez des CTE chaînés pour supprimer l'entreprise :
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)
Il est important d'exclure l'employé qui vient d'être supprimé du not exists
sous-requête car cela sera toujours visible dans la deuxième instruction de suppression et donc le non existe ne serait jamais vrai. Ainsi, la sous-requête vérifie essentiellement s'il existe un employé autre que celui supprimé affecté à la même entreprise.
Exemple en ligne :https://rextester.com/IVZ78695