最好不要这样做,用一个id做标识不可以,用另一个比如user_id来进行你上面的功能

解决方案 »

  1.   

    上面说错了,用一个id做标识还可以,用另一个比如user_id来进行你上面的功能
      

  2.   

    谢谢大家的意见!~~我锁表的目的是保证数据的正确性,防止多个用户向表中写数据,如果同时向表中写数据,读出的数据就可能不正确。锁住的时间是非常短的,应该不会造成其他用户不能登陆吧?最多是有点延时,延时一两秒钟应该还是可以接受的我用的是MySQL,对数据库也不是很了解,各位在用数据库的时候,要不要考虑对表或记录进行加锁呢?
      

  3.   

    你可以在添加的时候,先对表读取,比方说order by id desc,读出的是最后一台记录,然后 对该记录+1,肯定会产生新的序号,再insert就可以了,锁表为什么这么麻烦啊。
      

  4.   

    select id form table order by id desc limit 1,1id = id+1;
      

  5.   

    select id form table order by id desc limit 1,1id = id+1;
    但是如果两个人同时炒作时,还是会有问题,但是,纪录是相当的小了。
    -------------------------------------------------------
    最好建一个临时表,用来专门管理编号。表里面只有一个id字段。
    select id form table
    update table set id=id+1;
    这样你就可以自动得到id,并且不会有冲突,也不会重复。
      

  6.   

    谢谢大家
        我也是想用 id=id+1; 但是id字段的范围总是有限度的,id达到字段的最大值的时候就会出错了,所以要id=0从头开始,就好象linux的进程号一样,用到最大值的时候就用最小的值再开始,但是也有一些很小的进程号在使用,如init 始终是最小的,要检查并避开正在使用的进程号。
        锁表也是源于以前曾在比较古老版本的SCO UNIX上做过练习,那种数据库不规范,不支持SQL,如果不对数据进行加锁解锁的话,数据就混乱了,就好象交通的十字路口,如果没有红绿灯的限制,一定会出事故的。这种道理我比较容易接受。不知道MySQL是什么样的机制,是不是本身已经具备了,用户不再需要考虑这个问题?
      

  7.   

    mysql本身没有这个功能,不支持数据锁,我个人认为这是它最大的缺陷