zoukankan      html  css  js  c++  java
  • 在向"带有自增字段的数据库表"中插入数据时,自定义"该自增字段"的数据

    在设计数据库表的时候,经常会使用自增主键或其他自增字段。比如:

    QQ截图20130724155744

    DB_UserGroups表中GroupID为该表主键,并为自增字段。

    但在将某字段设置自增后,想在插入数据时,人为指定自增字段的数据内容。如:

    ·

    insert into DB_UserGroups values(0,'全部')
    
    ·
    这时SQL SERVER会提示:

    ·

    消息 8101,级别 16,状态 1,第 1 行
    仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Northwind.dbo.DB_UserGroups'中的标识列指定显式值。
    ·
    通过提示可以看到,需要将IDENTITY_INSERT设为ON,通过以下语句即可打开:
    ·
    SET IDENTITY_INSERT DB_UserGroups ON
    ·
    但是现在再次执行insert语句的时候,发现仍然是这个错误,后来发现我语文没学好,漏掉了一个条件,就是一开始提到的“仅当使用了列列表”,呃。。。好吧,需要这样写insert语句:
    ·
    insert into DB_UserGroups(GroupID,GroupName) values(0,'全部')
    ·
    恩,把要插入的字段全部在表名后标明,不可以省略,这样就OK了。
    如果不需要自定义自增字段数据,可以再次使用:
    ·
    SET IDENTITY_INSERT DB_UserGroups OFF
    ·
    关闭掉IDENTITY_INSERT。
    ·
    PS.标识列的数据一旦添加,不可更改!不过可以先去掉标识列的“是标识”,然后改完再加回来。。。我只能想到这么多了。
  • 相关阅读:
    Java集合(4):Iterator(迭代器)
    Java集合(3):Vector && Stack
    Java集合(2):LinkedList
    面试题29:顺时针打印矩阵
    面试题28:对称的二叉树
    面试题27:二叉树的镜像
    面试题26:树的子结构
    面试题24:反转链表
    面试题25:合并两个排序的链表
    面试题23:链表中环的入口结点
  • 原文地址:https://www.cnblogs.com/xwgli/p/3210928.html
Copyright © 2011-2022 走看看