Có cách nào có thể kiểm tra nếu một hàng đã bị khóa để cập nhật trong Oracle không?Làm cách nào để kiểm tra xem một hàng có bị khóa để cập nhật không?
Như một ví dụ, giả sử các truy vấn sau đây, được thực hiện bởi một người dùng:
select * from SOME_TABLE where THE_ID = 1000 for update;
Với người dùng khác tôi muốn kiểm tra xem hàng với THE_ID = 1000
bị khóa. Nếu tôi thử bản cập nhật hoặc thứ gì đó mà người dùng thứ hai bị chặn và vẫn đang chờ (không muốn điều đó).
Tôi cũng đã cố gắng chạy truy vấn sau đây với người sử dụng thứ hai:
select * from SOME_TABLE where THE_ID = 1000 for update NOWAIT;
Vì tôi không thể đặt hai ổ khóa trên cùng hàng này sẽ thất bại. Và nó có. Tôi nhận được một "ORA-00054: tài nguyên bận rộn và có được với lỗi được chỉ định NOWAIT". Tôi có thể luôn dựa vào lỗi này để kiểm tra sự hiện diện của khóa hay không, có cách nào đơn giản và rõ ràng hơn để xác định xem hàng có bị khóa không?
Cảm ơn bạn!
bạn nên nhận được lỗi này "ORA-00054: tài nguyên bận rộn và có được với NOWAIT được chỉ định" - bạn có chắc chắn người dùng của mình có thể xem bảng không? – SeriousCallersOnly
@ SeriousCallersOnly: Cảm ơn, tôi thực sự đang có “ORA-00054: tài nguyên bận rộn và có được lỗi NOWAIT được chỉ định”. ORA-00942 được một lớp ứng dụng khác của tôi ném. Xin lỗi vì điều đó. Tôi sẽ chỉnh sửa câu hỏi. –