要求编号简短。不要像GUID那样。太长了。用时间到毫秒也太长了(20091215153325)如果在8位或以下就好了。纯数字。各位有什么好的方法?

解决方案 »

  1.   

    自动编号太简单,还是用guid,你把id的长度设为?,guid就会自动生成?就不会向你说的生成的那么长了!
      

  2.   

    你难道不知道Guid有多长?记住了,128位...就算转换为16进制字符串也有32个字符长...8位数字确实太小...SQL Server可以用自动编号,Oracle可以用Sequence...
      

  3.   

    自增长的种子值基本满足要求,如果觉着int少,可以设为bigint,最大可达到9,223,372,036,854,775,807
      

  4.   

    sql里可以用自增字段,oracle里可以用序列
      

  5.   

    任何情况下都不建议用自动编号作为参数 可以用时间+自增组合标识 例
    [news]
    id   title   newsid
    1    新闻1    2009121505051
    2    新闻2   2009121505062这样做的好处是 多表关联数据时(例如新闻和评论) 在重建数据库或其他情况导致自增列重新排序情况下 不会导致数据不对应
    [comment]
    id   content   newsid
    1    评论        2009121505051
      

  6.   

    自增 以后就麻烦了。
    导个数据都受罪。
    SQL Server 的自动编号,Oracle可以用Sequence。
    都是麻烦的主。
    做个判断,在for循环过快的时候发生重复值的时候,在来一次。
    再或者 固定sleep的 睡眠时间。如果不是一下for 几万条数据 ,还是蛮好的。
      

  7.   

    [Quote=引用 6 楼 vrhero 的回复:]
    引用 3 楼 cswdcswd 的回复:
    自动编号太简单,还是用guid,你把id的长度设为?,guid就会自动生成?就不会向你说的生成的那么长了!你难道不知道Guid有多长?记住了,128位...就算转换为16进制字符串也有32个字符长...在数据库里设 sid varchar(10),最后只会生成10位的编号!我以前试过的!