我需要使用IDENTITY_INSERT ON导入一些数据到数据库中,导入后我需要将它设置回OFF吗?默认设置是什么?显然,我需要应用程序在每次向表添加记录/行时创建一个新的ID。
我需要使用IDENTITY_INSERT ON导入一些数据到数据库中,导入后我需要将它设置回OFF吗?默认设置是什么?显然,我需要应用程序在每次向表添加记录/行时创建一个新的ID。
默认设置取决于您在创建表时如何定义标识列,例如:
CREATE TABLE Table_Name(ID INT IDENTITY(1,1))
GO
这个ID列将有一个种子值为1,并且每次增加1。
默认情况下,您无法向Identity列添加值,但是您可以通过执行以下语句更改此默认行为。
SET IDENTITY_INSERT Table_Name ON;
在插入值后,您可以通过执行以下语句将其设置回默认行为。
SET IDENTITY_INSERT Table_Name OFF;
DBCC CHECKIDENT ( table_name, RESEED, 0)
DBCC CHECKIDENT ( table_name, RESEED)
第一条语句将重新启动Identity列的值,使其为Identity列中最小的值。
第二条RESEED语句如果没有提供任何Seed值,将重新生成Identity值,使其等于Identity列中的最高值加1。
如果有人在寻找一种在没有标识列的情况下创建密钥的方法:
CREATE TABLE [dbo].[TableName](
[Id] [int] NOT NULL PRIMARY KEY
)
替代
CREATE TABLE [dbo].[TableName](
[Id] [int] IDENTITY(1,1) NOT NULL
)