zoukankan      html  css  js  c++  java
  • MSSQL怎样使自动增加的id列数据归零

    MSSQL怎样使自动增加的id列数据归零

    W^~?9xH051Testing软件测试网#OT0VIJk

    讲到 identity 字段,似乎有两个非常不同的阵营。有些开发人员,比如受人尊敬的 Joe Celko,相信 identity 列伪造真相,引入了无意义的数据到一个(依其陈述)否则就很紧凑的数据库中。本文特别赞成第二个阵营(我本人属于该阵营)。这个阵营认为,一个对象与同一个域中的另外一个对象几乎一样(例如一个篮子中的鸡蛋)。我们相信这些对象应该被赋予一个无意义的主键(PK)。  51Testing软件测试网Qj&Z m:z(H

    } G(q D's4C,MWkt%P+S0  假设你依赖于 identity 列,该列有一个指定的种子和步进值,那么偶尔你会需要重设 identity 值。这种情况经常会发生,因为你会从表中删除很多行数据,而且并不想种子值反映出几百万条的测试记录,而是从1(或者10、100等任何一个数字)开始。但是在测试之后如何重设种子值呢?

    BVU)n)f6^Z.?,a1n0

    'x j2Q]4V0  解决方法是以 CHECKIDENT 关键字运行 DBCC,指定适当的参数。如何,如果你在测试过程中创建了非常多的数据记录,通过了回归测试,删除了所有的记录,并想把种子重设为1,那么你只要简单地发出类似如下原命令即可:

    +a}| zV VYW!MA051Testing软件测试网)\a x Uv2fl

      USE MyDatabase51Testing软件测试网zUM&?H

    51Testing软件测试网#@%t+US9|V/Fo

      GO

    4V5]/N(?J0

    b,a7vc9?I&c0  DBCC CHECKIDENT (MyTable, RESEED, 1)51Testing软件测试网2Y @*Dod`t

    N9`(zS jUV0D0  GO51Testing软件测试网N4u Aj}9v]

    51Testing软件测试网8TDc.oN/I

      这几行 SQL 代码将把指定表的种子值强制重设为1。然而,你可能不想将种子重设为1,在这种情况下,你可以用你想用的种子值替代第三个参数。  51Testing软件测试网 i0P|'`K.\

    -Y}yJz j0  有时候你可能想知道当前的种子,而不是想重设种子。在这种情况下,使用如下的 SQL:  51Testing软件测试网#x'i-p3J@pb^

    4O*n1sLd0  USE MyDataBase51Testing软件测试网 I0z%H'wvO#W

    51Testing软件测试网5u:h:h wrw

      GO51Testing软件测试网/yAh4gC u"fj ~

    51Testing软件测试网p*J/j*Oy[h0d Ln

      DBCC CHECKIDENT (MyTable, NORESEED)

    #Ut6?h![n0

    F ^|*eA9vA0  GO

    0G!cr m(`9C(S051Testing软件测试网(tGd%d+oCkL1n w,y:i"M

      总而言之,你可以将任意表的种子值重设为你想要的任何值——除了正在使用的值。你可以随时测试数据库然后删除所有的测试记录并将种子值重设为你需要的值。

  • 相关阅读:
    Chromium之文件类型
    To Chromium之浏览器外框UI(2)
    union的代码有点难理解额
    Graphic的一些基本概念
    windbg*****************************TBD
    x86/x64的stack*****************************TBD
    关于tp框架终于有点点头目了、、、、
    学习使用thinkphp框架制作cms
    我只是一名小小的员工
    每天读5分钟,受益匪浅、
  • 原文地址:https://www.cnblogs.com/lyghost/p/2507366.html
Copyright © 2011-2022 走看看