sql数据库中identity_insert的默认设置是什么?

时间:2013-12-26 14:24:59

标签: sql sql-server

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

1 个答案:

答案 0 :(得分:5)

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

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;

即使我们可以将值传递给Identity列,但这不是一个好习惯,因为它是一个自动生成的数字,如果您自己将值添加到identity列中,然后Identity列生成相同的数字,您可以重复在您的标识列中。

所以最好单独留下标识栏,让它为你生成值。

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

DBCC CHECKIDENT ( table_name, RESEED,  0) 
DBCC CHECKIDENT ( table_name, RESEED) 

第一个语句将Identity列的值重置为标识列中的最小值

第二个RESEED语句没有提供任何种子值,会将Identity值重新设置为您的标识列中最高值的下一个可用值。