你可以在添加的时候,先对表读取,比方说order by id desc,读出的是最后一台记录,然后 对该记录+1,肯定会产生新的序号,再insert就可以了,锁表为什么这么麻烦啊。
select id form table order by id desc limit 1,1id = id+1;
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,并且不会有冲突,也不会重复。
但是如果两个人同时炒作时,还是会有问题,但是,纪录是相当的小了。
-------------------------------------------------------
最好建一个临时表,用来专门管理编号。表里面只有一个id字段。
select id form table
update table set id=id+1;
这样你就可以自动得到id,并且不会有冲突,也不会重复。
我也是想用 id=id+1; 但是id字段的范围总是有限度的,id达到字段的最大值的时候就会出错了,所以要id=0从头开始,就好象linux的进程号一样,用到最大值的时候就用最小的值再开始,但是也有一些很小的进程号在使用,如init 始终是最小的,要检查并避开正在使用的进程号。
锁表也是源于以前曾在比较古老版本的SCO UNIX上做过练习,那种数据库不规范,不支持SQL,如果不对数据进行加锁解锁的话,数据就混乱了,就好象交通的十字路口,如果没有红绿灯的限制,一定会出事故的。这种道理我比较容易接受。不知道MySQL是什么样的机制,是不是本身已经具备了,用户不再需要考虑这个问题?