我必须使用IDENTITY_INSERT ON将一些数据导入数据库,导入后是否将其重新设置为OFF?什么是默认设置?显然,我需要应用程序将记录/行添加到表中,每次都创建一个新的ID。
答案 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值重新设置为您的标识列中最高值的下一个可用值。