Това е очаквано и документирано.
Вие можете използвайте верижни 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