Điều này được mong đợi và ghi lại.
Bạn có thể sử dụng CTE chuỗi để xóa công ty:
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)
Điều quan trọng là phải loại trừ nhân viên vừa bị xóa khỏi not exists
truy vấn phụ vì điều đó sẽ luôn hiển thị trong câu lệnh xóa thứ hai và do đó, điều không tồn tại sẽ không bao giờ đúng. Vì vậy, về cơ bản, truy vấn phụ sẽ kiểm tra xem có nhân viên nào khác với nhân viên đã bị xóa được chỉ định vào cùng một công ty hay không.
Ví dụ trực tuyến: https://rextester.com/IVZ78695