Dette forventes og dokumenteres.
Du kan bruge kædede CTE'er til at slette virksomheden:
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 er vigtigt at udelukke den netop slettede medarbejder fra not exists
underforespørgsel, da det altid vil være synligt i den anden delete-sætning, og derfor vil not exists aldrig være sandt. Så underforespørgslen tjekker i det væsentlige, om der er en anden medarbejder end den slettede, der er tilknyttet samme virksomhed.
Online eksempel:https://rextester.com/IVZ78695