Nếu tôi có truy vấn multiupdate nàyKhi exacly MySQL khóa một hàng khi cập nhật bảng InnoDB?
UPDATE user u
INNER JOIN user_profile up ON up.user_id = u.id
SET u.name = 'same_name_i_already_had', up.profile.age = 25
WHERE u.id = 10
Giả sử hàng 10 trong bảng người dùng đã có tên 'same_name_i_already_had', vì vậy nó không nên được cập nhật.
Mặt khác, hàng trong bảng user_profile có độ tuổi khác nhau, vì vậy MySQL nên cập nhật nó.
Giả sử MySQL như RDBMS và InnoDB với hệ thống khóa mức hàng của nó như là động cơ của cả hai bảng,
Liệu MySQL khóa hàng trong bảng sử dụng mặc dù không phải cập nhật các trường tên của hàng đó ?
Cảm ơn !!
Câu trả lời hay, tuy nhiên tôi không hiểu ổ khóa TABLE được hiển thị. Bạn có thể giải thích những gì innotop có nghĩa là? –
Chế độ "IX" là khóa cấp bảng có nghĩa là "I * định * khóa một số hàng trong bảng này." Nó sẽ không khóa các khóa mức hàng trên cùng một bảng, nhưng nó sẽ khóa các khóa mức bảng. Xem http://dev.mysql.com/doc/refman/5.5/en/innodb-lock-modes.html để có giải thích đầy đủ về khóa InnoDB và http://innotop.googlecode.com/svn/html/manual .html để giải thích đầy đủ về cách sử dụng chú thích. –
Câu trả lời hay nhất mà tôi từng có. Cảm ơn nhiều! –