在设计数据库表的时候,经常会使用自增主键或其他自增字段。比如:
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.标识列的数据一旦添加,不可更改!不过可以先去掉标识列的“是标识”,然后改完再加回来。。。我只能想到这么多了。