Nếu bạn đặt mức cô lập giao dịch thành SERIALIZABLE , InnoDB wil imp —— append LOCK IN SHARE MODE cho tất cả SELECT tuyên bố.
Chế độ này xung đột với các ổ khóa được đặt bởi SELECT FOR UPDATE và SELECT s sẽ khóa.
Tuy nhiên, lưu ý rằng InnoDB có thể khóa nhiều hàng hơn là đáp ứng WHERE điều kiện. Điều này là do nó khóa tất cả các hàng đã quét , không chỉ những người phù hợp .
Giả sử, bạn có một chỉ mục trên col1 và truy vấn này:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
sử dụng chỉ mục này.
Điều này sẽ khóa tất cả bản ghi có col1 = 1 , ngay cả những người có col2 <> 2