我必须使用IDENTITY_INSERT ON将一些数据导入数据库,导入后我将其重新设置为OFF吗?什么是默认设置?显然,我需要应用程序将记录/行添加到表中,每次都创建一个新的ID.
默认设置取决于您在创建表时定义标识列的方式
CREATE TABLE Table_Name(ID INT IDENTITY(1,1))
GO
Run Code Online (Sandbox Code Playgroud)
此ID列的Seed值为1,并且递增1.
默认情况下,您无法向Identity列添加值,但可以通过执行以下语句来更改此默认行为.
SET IDENTITY_INSERT Table_Name ON;
Run Code Online (Sandbox Code Playgroud)
插入值后,可以通过执行以下语句将其设置回其默认行为.
SET IDENTITY_INSERT Table_Name OFF;
Run Code Online (Sandbox Code Playgroud)
即使我们可以将值传递给Identity列,但这不是一个好习惯,因为它是一个自动生成的数字,如果您自己将值添加到identity列中,然后Identity列生成相同的数字,您可以在您的身份中重复柱.
因此最好单独留下标识列,并让它为您生成值.
如果有必要向Identity列添加值,那么我建议在每次有Indet_Insert ON之后执行以下语句并向Identity列添加一些值,
DBCC CHECKIDENT ( table_name, RESEED, 0)
DBCC CHECKIDENT ( table_name, RESEED)
Run Code Online (Sandbox Code Playgroud)
第一个语句将Identity列的值重置为您的标识列中的最小值,
第二个RESEED语句没有提供任何种子值,会将Identity值重新设置为您的标识列中最高值的下一个可用值.
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |