Đúng là INSERT
, UPDATE
hoặc DELETE
phải có được ROW EXCLUSIVE
khóa trên bàn để được cập nhật.
Tuy nhiên, khóa này không ngăn SELECT
từ hoạt động bình thường. SELECT
chỉ yêu cầu ACCESS SHARE
Khóa. Khóa này tương thích với ROW EXCLUSIVE
- nói cách khác, bạn có thể thực thi SELECT
một cách hoàn hảo trong khi dữ liệu khác được cập nhật bởi INSERT
, UPDATE
hoặc DELETE
, miễn là bạn không có được bất kỳ khóa rõ ràng nào.
Nói cách khác, bạn sẽ không bao giờ thấy bất kỳ bế tắc nào khi sử dụng cách tiếp cận thứ hai (chỉ cần không sử dụng SELECT FOR UPDATE
và bạn sẽ ổn).
Đọc thêm trong tài liệu PostgreSQL .