如题,请有这方面经验的朋友指点一下关键问题是,这种方法是不是百分之百稳妥????如果没有百分之百的把握???如果有,则不需要做任何重复的判断如果没有,则还是要加上重复判断的东东

解决方案 »

  1.   

    或者这样问更简单一些。用GUID做主键朋友,你们程序运行过程中,有没有遇到过GUID重复的情况????(遇到过一次,就算遇到过了)
      

  2.   

    GUID是不会重复, 不过有前提(1)由标准算法进行生成,不能有手动的修改 (2) 服务器时间要正确  ... 就想到这两点
      

  3.   

    回xdev:1、C#的System.Gukd.NewGuid().ToString()应该就是标准算法吧2、服务器的时间正确与否,和GUID是否重复,有什么关系????
      

  4.   

    guid的算法决定了它永远都不会重复,就算一秒生成一个,它足够用到世界末日了
      

  5.   

    guid的算法决定了它在任何星球  任何时间  任何地点都不会重复 而不用考虑系统是否重装
    guid是根据服务器当前时间 CPU(序列号 ?这里忘记了)  生成的 
    任何时间 任何机器都不会产生相同的guid 
    guid是无穷尽的,这也是为什么有些表要用它作为关键字的原因  因为int是有限的 
      

  6.   

    GUID是按照OSF DCE,3算法计算.GUID是以下几部分的组合:当前日期和时间(GUID的第一个部分与时间有关,如果你在生成一个GUID之后,过几秒又生成一个GUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)等。在Windows编程时,也可以调用CoCreateGuid函数获得。
      

  7.   

    UP,GUID不必啦。想想看,WIN95到今天大大概十年了吧,全世界每天开发的COM应该不止一万个,这十年中,有COM相重复的么?
      

  8.   

    每秒钟生成10个,不会重复。如果间隔更断呢???? 比如,一个服务程序,在很短的时间内(几乎同时),接到两个来自不同客户的请求,要求在数据库中插入记录。 这样,就会在间隔很短的时间内(几乎同时),生成两个GUID号。
      

  9.   

    你想象的是同时,但是记住CPU在某一个时间也只会处理一个请求吧!即使是多CPU的大型机,我想数据库的插入也是异步的,不存在同步吧!
      

  10.   

    楼主,放心吧!就算出现了两个地球或者克隆出N个楼主,GUID也不会重复的!
    GUID理论上可以产生6.3340286662973277706162286946812e+49个值!
      

  11.   

    Guid是通过网卡的MAC地址和时钟来产生的,微软说这个算法可以保证在20xx(具体的不记得了)年之前不会出现重复的。有一点可以保证,十年内Guid不会重复。
      

  12.   

    说得也有道理。因为:我从来没有中过500万体彩。推论:我也应该遇不到GUID重复。呵呵!!!!!
    另外,再做个最佳的假设:如果:我遇到了GUID重复那么:我也中了500W体彩。哈哈哈!!!!到那时候,管TMD什么GUID重复,管TMD什么鸟客户,抱着500W天天做美梦罗,哈哈哈(白日梦)
      

  13.   

    用网卡标识+cpu时钟得到的 
    10年之内肯定不会重复,以后若干年的没有人保证,至少微软没有
      

  14.   

    可以认为10年内不会重复的,因为重复的概率即使有,也远远小于“机器0”,如果比“机器0”还小的东西都要考虑,那就不要用电脑了。。还有上面说的10年不重装系统的电脑,不好意思,有!!我见过1994年买的电脑,现在都没重装过,操作系统为UNIX。
    如果是Windows有可能吗?
    不好意思,还是有,如果有人买台电脑回来当摆设(不可否认有这种人),用都没用过,相信10年是可以不重装的。
      

  15.   

    GUID保證在時間和空間上的唯一,我想生成的值和電腦的時間,和時區有關吧
      

  16.   

    GUID无法在理论上保证不重复,最简单的情况:当机器的CMOS没电时如果继续生成GUID,那么就有可能在有限的时间内产生出重复的guid
      

  17.   

    这个就像使用 MD5 散列一样,虽然实际中产生Hash冲撞的概率很小但仍然存在这种可能性
      

  18.   

    guid好像是通过 网卡号 + 时间 + 内部自增号 算出来的所以一旦CMOS时钟坏掉,很快就会发生重复
      

  19.   

    先想想,是不是10年遇到一次重复,程序就再也不能用了呢?Hashtable中使用的hashcode的重复的机会比GUID更多,可是重复的机会仍然可以忽略.
    与其想这个比中六合彩还难的问题,还不如担心一下硬盘什么时候出坏道啦.
      

  20.   

    哦,是这样的。
    那既然重复的概率那么小,重复一次,楼主就当倒霉吧。
    如果是商业应用的话,等GUID重复的时候:
    (1)由于属于极其偶然的事件,维护人员(说不定是在座某某人的孙子)可以手工排除故障;
    (2)连GUID都重复了,说明贵公司的业务量已经暴多,赚的钱已经多到足以让老板放弃生意而去夏威夷买上2万套别墅,安享晚年了。——那时候,他老人家哪还有兴趣过问服务器故障?
      

  21.   

    字符串的 Hashcode重复的机会就更多了,根本不可以忽略的人家MS的Hashtable中处理掉的,很容易就找出两个不同字符串但Hashcode一样的例子
      

  22.   

    window系统如果10年你不用的话,肯定会坏掉,不相信你做一个实验看看!
    哈哈啊哈哈…………