lock in share mode:可以读,禁止写
for update:禁止读写
假设当前有个事件表 event 含有字段 id title ,按照时间顺序执行 t1,t2,t3....(注意使用Innodb测试)
测试lock in share mode:
控制台1:
begin;
SELECT * from `event` lock in share mode #t1
commit; #t4
控制台2:
begin;
SELECT * from `event`; #t2 //正常读到值
update `event` set title =88 ; #t3 //阻塞,直到t4执行完毕才执行
测试for update:
控制台1:
begin;
SELECT * from `event` for update #t1
commit; #t4
控制台2:
begin;
SELECT * from `event`; #t2 //阻塞 直到t4执行完毕才得的具体值
update `event` set title =88 ; #t3 // 禁止读写