表的主键,或id字段,用自动递增是最简单,也不严谨的办法。
网站有很多人介绍各种方法,要求用数字,又不太长,又保证不能重复,便于不同库和表间的复制。
我在开发domypp.com时,经常需要把我电脑上的测试数据复制到正式网站上,这时两个库的同样的表的记录的id可能重复,如果用自动递增的方式吧。我的办法是:
//获得时间加随机数的id,如果作为id,会有一定的重复率。适合于要求不太高的情况。
function getNewId()
{
return substr(time()."",5).rand(10000,99999);
}
上面用的是php。解释:
time()函数返回1971年到现在的秒数,但作为id,位数太多了,因此我截取后面的几位,加上一个从1万到9万的随机号。这样产生的id重复概率足够低(根据项目情况),位数也不多。大家还有什么好办法?数据库PHPid

解决方案 »

  1.   


    这样是因为你跳过数据库的自增计数器,这个问题是因为操作不当导致的,就像你删除了一条记录,却怪数据库把你的数据弄丢了正确的做法是insert的时候移除自增字段的数据
      

  2.   

    insert replace into 替换原有主键数据
    insert ignore into 跳过重复楼主可以参考下。
      

  3.   

    "time()函数返回1971年到现在的秒数"? 楼主要不要去进补一下。
      

  4.   

    其实2个库再次插入的时候可以不选择id自动,比如
    B库要插入到A库,A库
    id value
    1   5
    2   5
    B库
    id value
    1   6
    2   6insert into A select '',`value` from B
      

  5.   

    结果就是
    A库
    id value
    1   5
    2   5
    3   6
    4   6