Như bạn đã nhận thấy, sẽ rất khó để trả lời các yêu cầu kinh doanh của bạn với các trình kích hoạt. Lý do là Oracle có thể cập nhật / chèn các bảng có nhiều hơn một luồng cùng một lúc cho một truy vấn duy nhất (DML song song). Điều này ngụ ý rằng phiên của bạn không thể truy vấn bảng mà nó cập nhật trong khi cập nhật diễn ra .
Nếu bạn thực sự muốn làm điều này với trình kích hoạt, bạn sẽ phải làm theo tiêu đề loại logic được Tom Kyte thể hiện trong bài viết này . Như bạn có thể thấy, nó không phải là một cái gì đó đơn giản.
Có một phương pháp khác, đơn giản hơn, thanh lịch hơn, dễ bảo trì hơn:sử dụng các thủ tục. Thu hồi quyền cập nhật / chèn đối với (các) người dùng ứng dụng và viết một bộ quy trình cho phép ứng dụng cập nhật các cột trạng thái.
Các thủ tục này sẽ giữ một khóa trên hàng mẹ (để ngăn nhiều phiên sửa đổi cùng một nhóm hàng) và sẽ áp dụng logic nghiệp vụ của bạn theo cách hiệu quả, dễ đọc và dễ bảo trì.