2
我想知道爲什麼MySQL不允許在存儲過程中鎖定表。MySQL存儲過程中的InnoDB表鎖定
我有我的存儲過程中的下列SQL語句:
-- Total amount of money for comments
start transaction;
select @num_comments := count(*)
from `comment` c
where
c.user_id = user_id and
c.payment_rejection = 'NO' and
c.is_recorded = 0;
update `user` u set account_balance += u.comment_price * @num_comments where u.user_id = user_id;
update `comment` c set is_recorded = 1 where c.user_id = user_id and c.payment_rejection = 'NO' and c.is_recorded = 0;
commit;
所以我要鎖表comment
,以防止任何書面它可能會導致在第一個SQL語句所選擇的行數是不同於實際更新的數量。
SHARE模式鎖定在你的SELECT查詢(不知道它是否和count(*)一起工作)..注意,如果INSERTS運行在鎖定記錄上並且更新需要很長時間,你將/可以獲得事務超時。 –