SQL-如何在不自动递增ID列的情况下插入行?

Spo*_*com 29 sql sql-server auto-increment

我有一个具有强制自动增量列的表,此列是一个非常有价值的ID,可以在整个应用程序中保留.很抱歉,我认为这是一个自动增量列的开发很差.

所以,这是问题所在.我必须在此表中插入已经创建并从表中删除的列的ID.有点像复活这个ID并把它放回到表中.

那么如何以编程方式执行此操作而不关闭列增量.如果我错了,请纠正我,如果我以编程方式将其关闭,它将在0或1重新开始,我不希望发生这种情况......

Cha*_*ana 71

如果您在Microsoft SQL Server中,则可以通过发出语句来"关闭"autoIncrementing功能Set Identity_Insert [TableName] On,如下所示:

  Set Identity_Insert [TableName] On
  -- --------------------------------------------
  Insert TableName (pkCol, [OtherColumns])
  Values(pkValue, [OtherValues])
  -- ---- Don't forget to turn it back off ------
  Set Identity_Insert [TableName] Off
Run Code Online (Sandbox Code Playgroud)


mar*_*c_s 8

除了查尔斯的回答(现在100%正确:-)并保留了表上IDENTITY的当前值),您可能还想检查表上IDENTITY的当前值 - 您可以这样做在这里使用此命令:

DBCC CHECKIDENT('YourTableName')
Run Code Online (Sandbox Code Playgroud)

如果您需要实际更改它,可以在此处使用此命令:

DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY) )
Run Code Online (Sandbox Code Playgroud)


小智 5

实际上,上面INDENTITY_INSERT的代码是正确的-将其打开会告诉服务器您想自己插入值。它允许您将值插入IDENTITY列。然后,您需要在完成后将其关闭(允许服务器生成并插入值)。