表的主键,或id字段,用自动递增是最简单,也不严谨的办法。
网站有很多人介绍各种方法,要求用数字,又不太长,又保证不能重复,便于不同库和表间的复制。
我在开发domypp.com时,经常需要把我电脑上的测试数据复制到正式网站上,这时两个库的同样的表的记录的id可能重复,如果用自动递增的方式吧。我的办法是:
//获得时间加随机数的id,如果作为id,会有一定的重复率。适合于要求不太高的情况。
function getNewId()
{
return substr(time()."",5).rand(10000,99999);
}
上面用的是php。解释:
time()函数返回1971年到现在的秒数,但作为id,位数太多了,因此我截取后面的几位,加上一个从1万到9万的随机号。这样产生的id重复概率足够低(根据项目情况),位数也不多。大家还有什么好办法?数据库PHPid
网站有很多人介绍各种方法,要求用数字,又不太长,又保证不能重复,便于不同库和表间的复制。
我在开发domypp.com时,经常需要把我电脑上的测试数据复制到正式网站上,这时两个库的同样的表的记录的id可能重复,如果用自动递增的方式吧。我的办法是:
//获得时间加随机数的id,如果作为id,会有一定的重复率。适合于要求不太高的情况。
function getNewId()
{
return substr(time()."",5).rand(10000,99999);
}
上面用的是php。解释:
time()函数返回1971年到现在的秒数,但作为id,位数太多了,因此我截取后面的几位,加上一个从1万到9万的随机号。这样产生的id重复概率足够低(根据项目情况),位数也不多。大家还有什么好办法?数据库PHPid
这样是因为你跳过数据库的自增计数器,这个问题是因为操作不当导致的,就像你删除了一条记录,却怪数据库把你的数据弄丢了正确的做法是insert的时候移除自增字段的数据
insert ignore into 跳过重复楼主可以参考下。
B库要插入到A库,A库
id value
1 5
2 5
B库
id value
1 6
2 6insert into A select '',`value` from B
A库
id value
1 5
2 5
3 6
4 6