Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于密钥错误,SQL Server插入错误_Sql_Sql Server - Fatal编程技术网

由于密钥错误,SQL Server插入错误

由于密钥错误,SQL Server插入错误,sql,sql-server,Sql,Sql Server,我得到了这个错误 违反主键约束“X_dbo.XYZ”。无法在对象中插入重复的键 我相信这不是由重复的钥匙引起的 我知道当您添加一行(在我的例子中是int)时,SQLServer正在使用一种“机制”来插入默认键 删除表中的所有行,然后尝试通过为id指定一个以前在该表中的值来添加行后,出现此错误 我相信这是由我不完全理解的“机制”造成的 例如,我在表XYZ中有一行 Id Name 1 "some name" 我删除这一行,然后尝试添加一个Id为1的新行 INSERT ....

我得到了这个错误

违反主键约束“X_dbo.XYZ”。无法在对象中插入重复的键

我相信这不是由重复的钥匙引起的

我知道当您添加一行(在我的例子中是int)时,SQLServer正在使用一种“机制”来插入默认键

删除表中的所有行,然后尝试通过为id指定一个以前在该表中的值来添加行后,出现此错误

我相信这是由我不完全理解的“机制”造成的

例如,我在表XYZ中有一行

Id     Name
 1     "some name"
我删除这一行,然后尝试添加一个Id为1的新行

INSERT .... 
VALUES (1, 'some other name for new row')
我得到了这个错误

在insert中不指定id对我来说不是一个选项,我需要解决此问题或此错误

谢谢

已更新

I表是使用实体框架和代码优先方法(C#)创建的

插入脚本如下所示

SET IDENTITY_INSERT [dbo].[XYZ] ON 
GO

INSERT [dbo].[XYZ] ([ID], [Key], [Value], [Description], ...) 
VALUES (1, N'PaymentMode', N'Test', N'PaymentMode', ...)

如果您将Id设置为“标识列”,请不要插入具有旧Id的行。
对于插入,您必须在“属性”选项卡的“表设计器”中,将“标识列”设置为“”。

在表上设置了自动递增时,即使删除记录,表也不会重置要插入的下一行号。所以,如果您插入一行,将得到ID=1。如果删除该行并添加新行,即使1不再存在,该新行的ID也将为2。要重置该值,请使用以下命令

DBCC CHECKIDENT ([dbo].[XYZ], RESEED, 0)

显示CREATETABLE语句和insert语句。是否有一些触发器处于活动状态?您确定这不会从另一个表中删除吗?还显示Delete scriptDelete很简单,只是(从XYZ中删除*)没有其他我希望不删除该表的内容。如果有办法重新设置下一个身份证号码,那就太理想了。是的,这正是我想要的,非常感谢。
DBCC CHECKIDENT ([dbo].[XYZ], RESEED, 0)