多人同时从同一个表中取一条数据,如何避免取到相同的数据
要用锁吗?
谢谢

解决方案 »

  1.   

    仅用SQL语句无法实现。只能在数据库中加个表XX,存放已取过的数据ID,然后其它人再取的时候从未取过的数据来得到。取到记录后再添加到XX表中后释放表XX的锁。
      

  2.   

    实现此功能,不妨增加一个冗余列,flag = true,表示已经有人拿走了,false表示可用。
    这样,当一个人获取一条记录时,依其主键,将flag改为true,余下的人从flag=false里再取一条,再更新。
    取和更新的时候加上锁就行了。
      

  3.   


    LOCK TABLES ..begin transaction ..
    请参考一下手册。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    如果是B/S之类有统一服务端程序的,也可以在程序端专门模块里面专门分配给不同的人不同的“令牌”,然后确保对应的SQL按照该“令牌”去查询不会与其他“令牌”的查询相冲突即可。比如,PK%N=TOKEN (0 < TOKEN < N)