Bạn cần thêm chỉ mục trên id
để đảm bảo rằng bạn nhận được khóa ở cấp độ hàng. SELECT ... FOR UPDATE
khóa tất cả các hàng được đọc để thực hiện truy vấn, không chỉ các hàng thực sự được chọn. Nếu không có chỉ mục, nó phải thực hiện quét toàn bộ bảng, do đó, mọi hàng đều bị khóa.
Với một chỉ mục, nó chỉ đặt một khóa trong mục nhập chỉ mục đó, nó không phải đọc bất kỳ hàng nào khác, vì vậy sẽ không có hàng nào khác bị khóa.