select...for update 行锁 项目涉及到了 今天就记录一下:
select...for update的意思就是把查询出来的数据加上锁,等事务自动提交后锁才被释放。
在mysql数据库中新建查询窗口中执行
select * from msg_task_record_detail where state='2' FOR UPDATE;
执行完上面的语句看一下数据库上面会显示提交和回滚
另建一个查询窗口执行
UPDATE msg_task_record_detail set state='123' where state='2'
数据库会显示正在处理,意思就是你这一行数据被锁住了,必须等释放以后才能对这一行数据做更新操作
注意:
select...for update 行锁能成功的前提下是必须有索引。