sql数据库中标识插入的默认设置是什么?

sql数据库中标识插入的默认设置是什么?,sql,sql-server,Sql,Sql Server,我必须使用IDENTITY_INSERT ON将一些数据导入数据库,导入后是否将其设置为OFF?它的默认设置是什么?显然,我需要应用程序向表中添加记录/行,每次生成一个新ID。默认设置取决于创建表时定义标识列的方式 比如说 CREATE TABLE Table_Name(ID INT IDENTITY(1,1)) GO 此ID列的种子值为1,增量为1 默认情况下,不能向标识列添加值,但可以通过执行以下语句来更改此默认行为 SET IDENTITY_INSERT Table_Name ON;

我必须使用IDENTITY_INSERT ON将一些数据导入数据库,导入后是否将其设置为OFF?它的默认设置是什么?显然,我需要应用程序向表中添加记录/行,每次生成一个新ID。

默认设置取决于创建表时定义标识列的方式 比如说

CREATE TABLE Table_Name(ID INT IDENTITY(1,1))
GO
此ID列的种子值为1,增量为1

默认情况下,不能向标识列添加值,但可以通过执行以下语句来更改此默认行为

SET IDENTITY_INSERT Table_Name ON;
SET IDENTITY_INSERT Table_Name OFF;
插入值后,可以通过执行以下语句将其设置回默认行为

SET IDENTITY_INSERT Table_Name ON;
SET IDENTITY_INSERT Table_Name OFF;
尽管我们可以将值传递给Identity列,但这不是一个好的做法,因为它是一个自动生成的数字,如果您自己将值添加到Identity列,然后Identity列稍后生成相同的数字,那么您的Identity列中可以有重复的数字

所以最好不要使用identity列,让它为您生成值

如果有必要向Identity列添加值,那么我建议在每次启用Indet_Insert之后执行以下语句,并向Identity列添加一些值

DBCC CHECKIDENT ( table_name, RESEED,  0) 
DBCC CHECKIDENT ( table_name, RESEED) 
第一条语句将标识列的值重新设定为标识列中的最小值

DBCC CHECKIDENT ( table_name, RESEED,  0) 
DBCC CHECKIDENT ( table_name, RESEED) 
第二个RESEED语句(未提供任何种子值)将标识值重新设定为下一个可用值,并设定为标识列中的最高值

这是会话的属性。不是桌子。