当前位置: 行情首页 >> 技术文章 >> 技术文章 >> 另类的Identity乱编号问题

  • 另类的Identity乱编号问题。 MS-SQL Server / 基础类
  • 2007-10-18 15:40:33 杭州电脑数码城 转载来源:csdn.net
  • 社区 - MS-SQL Server / 基础类

    另类的Identity乱编号问题。

    () 2000-02-01 15:46:00在 MS-SQL Server / 基础类 提问

    在一个使用MS SQL6。5的系统中,数据库中带有Identity列的表经常出现重号的现象,怀疑是因为服务器当机等情况造成的,但即使当机也不应该出现这种情况。希望有经验的大师们帮忙解释解释,有什么好的解决办法么?实在不行我就不用它了。

    问题点数:50、回复次数:9

    1楼 () 回复于 2000-02-01 16:50:00 得分 10


    SQL,sybase 的Identity有很多BUG,最好不用

    2楼 929 () 回复于 2000-02-02 15:12:00 得分 5


    IDENTITY类型是自动增量类型。它一般为表中的字段实现自动增长。但在增加过程中,SERVER不保证增加的值是连续的,有可能在增量过程中出现空号。另外,SERVER对于向表中灌入数据的操作,比如说用BCP时,不对传入的数据自动增量值的重复与否进行校验,因此可能在这种情况下出现重号的情况。对于一个表来说可用IDENTITY类型来做表的字段,但如果出错,可用另外一个表存储主键值,然后自己通过程序对这个值递增,实现IDENTITY的功能。

    3楼 Michael () 回复于 2000-02-02 16:14:00 得分 0


    可能是有数据倒入倒出行为。只要将此列设为主键,应该没问题。

    4楼 july (沉船侧畔) 回复于 2000-02-13 16:06:00 得分 0


    Don't use it,and programe it with yourself

    5楼 abeliu () 回复于 2000-02-16 14:51:00 得分 5


    IDENTITY类型是自动增量类型。它一般为表中的字段实现自动增长。但在增加过程中,SERVER不保证增加的值是连续的,有可能在增量过程中出现空号。一般情况下,也将该字段作为主键使用.
    插入新记录时,如果出现重号,系统一般返回错误(SQLCODE非0),这时可以执行以下命令修复该id值:dbcc checkident(表名).

    6楼 july (沉船侧畔) 回复于 2000-02-17 18:39:00 得分 5


    你在那里,sleep???

    7楼 () 回复于 2000-02-18 16:50:00 得分 0


    谢谢大家!我还想看看还有没有其他的答案了?

    8楼 dongxun (Alex) 回复于 2000-02-29 18:22:00 得分 25


    推荐使用UNIQUEIDENTIFIER类型,并与DEFAULT=NEWID()共同使用,就可以避免这样的事情发生了。

    9楼 () 回复于 2000-03-10 13:06:00 得分 0


    感谢大家等这么久。
    我想解释一下分数的分配。有意见可以保留。呵呵。
    radish的10分 在某个高度上给出了原则性的建议,并且很热心。
    929 的5分 设想的状况和给出的不符,但也给出了解决方法。
    Micheal 好象你没有这种乱编号的体验。
    july 简单、太简单,呵呵,有点不负责。
    abelu的10分 感谢你的处理后事的经验和办法
    july的5分 感谢你对在下的关心。
    flyhorse 在这里当然没有他的事
    dongxun的20分 简明扼要地解决了问题。谢谢!



竟价广告:

    业界行情新闻声明事项:

    • ☉本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性!
    • ☉如其他媒体、网站或个人从本网下载使用,必须保留本网注明的“稿件来源”,并自负版权等法律责任。如对稿件内容有疑议,请及时与我们联系.
    • ☉如本网转载稿涉及版权等问题,请作者在速来电或来函与杭州电脑数码城网联系.
    • ☉本站网址:http://www.ititt.com/投诉邮箱:6371222@qq.com