Nếu bạn chỉ muốn ngăn bất kỳ phiên nào khác sửa đổi dữ liệu, bạn có thể phát hành
LOCK TABLE whatever
/
Điều này chặn các phiên khác cập nhật dữ liệu nhưng chúng tôi không thể chặn những người khác đọc nó.
Lưu ý rằng trong Oracle hiếm khi cần khóa bảng như vậy, bởi vì Oracle vận hành một chính sách nhất quán về việc đọc. Có nghĩa là nếu chúng tôi chạy một truy vấn mất mười lăm phút để chạy thì hàng cuối cùng được trả về sẽ nhất quán với hàng đầu tiên; nói cách khác, nếu tập hợp kết quả được sắp xếp theo thứ tự ngược lại, chúng tôi sẽ vẫn thấy chính xác các hàng giống nhau.
chỉnh sửa
Nếu bạn muốn triển khai hàng đợi (mà không thực sự sử dụng chức năng xếp hàng nâng cao được tích hợp sẵn
) rồi đến SELECT ... FOR UPDATE
là con đường để đi. Cấu trúc này cho phép một phiên để chọn và khóa một hoặc nhiều hàng. Các phiên khác có thể cập nhật các hàng đã mở khóa. Tuy nhiên, việc thực hiện một hàng đợi chính hãng khá cồng kềnh, trừ khi bạn đang sử dụng 11g. Chỉ trong phiên bản mới nhất Oracle mới hỗ trợ SKIP LOCKED
mệnh đề. Tìm hiểu thêm
.