首页 新闻 会员 周边 捐助

关于mysql锁表的问题。

0
悬赏园豆:20 [已解决问题] 解决于 2012-06-20 10:37

由于项目需要,

每次查询出3条数据

客户端操作

更新这3条数据

 

 

由于是多客户端的,为了防止这3条数据被多客户端同时取得,我想在查询的时候加个表锁,在更新后解锁,不知道可否实现,要怎么实现,还有就是表锁的生命周期,当次操作数据库加锁后直到下一次再操作数据库遇到解锁语句才会解锁?还是当次操作不管是否遇到解锁语句都会自动解锁?

冰封一夏的主页 冰封一夏 | 初学一级 | 园豆:13
提问于:2012-06-18 15:27
< >
分享
最佳答案
0

表锁参考 http://www.phpq.net/mysql/mysql-table-lock.html

不过使用锁对于并发处理有影响,可以使用乐观锁【加时间戳或版本】

参考http://esffor.iteye.com/blog/168243 

收获园豆:20
2012 | 高人七级 |园豆:21645 | 2012-06-19 08:06

不能解决问题啊,要的是取出数据,在客户端操作  然后再更新回去,当该条数据取出后就不允许其他客户端再获取了

冰封一夏 | 园豆:13 (初学一级) | 2012-06-19 09:22

@冰封一夏: 如果这种情况,可以通过标记字段区分那个记录正在操作,此时,其他人获取时不能取到就可以了,具体流程:

1、准备更新时把记录的flag标志置为true[对应表中的一个字段]

2、其他的人取不到这个记录

3、更新完后flag标志置为false

2012 | 园豆:21645 (高人七级) | 2012-06-19 18:14

@2012: 你说的这种我试过效果不好,不过已经解决了,使用update  where id and flag=false  这样 如果已经被更新的话这个更新回返回受影响行数0  然后就可以根据这个返回的受影响行数进行操作了

冰封一夏 | 园豆:13 (初学一级) | 2012-06-20 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册