zoukankan      html  css  js  c++  java
  • sqlserver的一点新发现。

    1.当表中存储有大量的数据情况下,修改表的主键,并设置标识列的方法。

    --给已经存在的字段Id添加主键约束
    ALTER TABLE 表名 ADD 列名 int identity(1,1) primary key

    alter table 表名

    add constraint pk_id primary key (id);

    设置标示列的数据:

    A:有数据的话
    ALTER TABLE ADD 编号1 bigint identity(1,1) not null
    go

    SET IDENTITY_INSERT ON
    go

    update set 编号1=编号
    go
    SET IDENTITY_INSERT OFF
    go

    ALTER TABLE DROP COLUMN 编号
    go
    exec sp_rename .编号1,编号
    go

    B:无数据:
    ALTER TABLE ADD 编号1 bigint identity(1,1) not null
    go
    ALTER TABLE DROP COLUMN 编号
    go
    exec sp_rename .编号1,编号
    go

    自增长的表示列的序号的值的修改。

    SQLServer数据库自增长标识列的更新修改操作方法(转载)
    在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号。比如文章编号、记录序号等等。自增长的标识列的引用很大程度上方便了数据库程序的开发,但是有时这个固执的字段类型也会带来一些麻烦。

    一、修改标识列字段的值:(在执行insert时,将ID手动的 设置成想要的值)
    有时,为了实现某个功能,需要修改类型为Identity自增长类型的字段的值,但由于标识的类型所限,这种操作默认是不允许的。比如,目前数据库有10 条正常记录,引时删除5条,那么如果再添加数据时,自增长的标识列会自动赋值为11,可这时如果想在插入数据时给赋值6呢,默认是不允许的。如果说想改变 主键标识符的值,完全由自已控制标识字段的插入,方法是有的,如下:
    SET IDENTITY_INSERT [TABLE][ON|OFF]
    使 用上述语句,可以方便的控制某个表的某个自增长标识列是否自动增长,也就是说是否允许你在inert一条记录时手动指定主键标识列字段的值。


    如果指定为ON,则可以insert时指定主键标识字段的值,该值不自动增长。如果使用完毕,还需使用这个语句将开关关闭到默认状态OFF,不然下次 insert数据时该字段还是不会自动增长,要做到有始有终嘛。只是每次插入时都要手动的设置一个主键值,示列如下:
    set identity_insert  question_title on   //开启手动设置
    insert into question_title (f_id,f_valid,f_questionTitle) values(6,5,'hello');  //手动的向数据库插入数据

    二、重置标识列字段值:
    当数据记录被删除一部分后,后面再添加的新数据记录,标识列数值会有很大的空闲间隔,看上去不是很爽。即使你删除表中全部记录,identity标识列的 值还是会无何止的自动增加变大,而不是从头开始增长。通过下面这条语句可以重置自增长字段的值:
    DBCC CHECKIDENT(TABLE,[RESEED|NORESEED],[1])
    上述语句把指定表的ID值(种子值)强制重设为1。然而,如果你不想将ID重设为1,你可以用你想用的ID值(种子值)替代第三个参数。如果你想知道当前的ID值(种子值),而不想重设标识种子,这时你就要用NORESEED,而不用再去设置第三个参数。


    DBCC checkident(question_title,reseed,1)

    insert into question_title (f_valid,f_questionTitle) values(5,'hello');

     如果将表中记录都删除后,执行上面的一句话,这时ID的自增长值已被重设,再insert插入记录到数据库时,ID就可以从设置的1开始,以后每次插入的 记录还是自动增长。
    执行成功后提示如下:
    --检查标识信息: 当前标识值 '9',当前列值 '1'。
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

    说明:以上显示数据库某表中当前ID最大值为9,当前设置的ID值为1。

  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/gxg2008540/p/1907198.html
Copyright © 2011-2022 走看看