zoukankan      html  css  js  c++  java
  • Sybase自增字段跳号处理

    跳号原因及影响:
         在Sybase数据库中如果数据库在开启的情况下,因为非正常的原因(死机、断电)而导致数据库服务进程强制结束。
    那么自动增长的字段将会产生跳号的情况,再往数据表里面插入记录时,自增字段会跳到一个相当大的值上面,以至于主键的自增值极有可能被用尽,或由于数值太大,应用程序中的数据类型如int型等已无法容下这么大的值,而无法在程序里面进行相关的操作。

    解决办法:
    如果还未发生过跳号情况,可按如下办法解决:
        1.执行【 select 'sp_chgattribute ' + name + ', ''' + 'identity_gap' + '''' + ', 60 go'
          from sysobjects
          where type='U'】。其中的60是凭感觉给的一个值,一般来说这个值越大性能越好,但越大,再发生数据库服务进程非正常结束时,所跳的号也就越大。
        2.对1执行的结果,拷贝到SQL编辑区域,再执行。
    若已经发生跳号,需要将表中数据导出,再重建数据表,再执行1和2。再导入数据。

    后话:
        Sybase自增字段有个最大的问题是,再移植数据库时,如果是按自增主键进行关联的数据表,在数据重新导入后,可能出现主从表的外键无法关联的情况,我是开始时没预料到这样的情况,现木已成舟,没有办法了。
    以后还是要慎用自增字段作为主键。
  • 相关阅读:
    Uva(10129)+Uva(10054)
    Uva 10004(二分图的判定)
    flume系列之—flume ng使用demo
    目前可选的开源日志收集项目
    flume系列之一flume简介
    Objective-C之null NaN undefined
    Objective-C之category
    Objective-C协议与非正式协议
    Objective-C学习笔记_命令行参数获取
    Objective-C学习笔记_Xcode模拟命令行填入参数执行
  • 原文地址:https://www.cnblogs.com/xuyuan77/p/1033522.html
Copyright © 2011-2022 走看看