无法在对象'dbo.TitleClient'中插入具有唯一索引'XAK1TitleClient'的重复键行

时间:2011-03-21 20:04:56

标签: sql sql-server

自从我清理了SQL数据库上的数据后,我就遇到了这个问题,而在不干净的数据库上,这个问题并没有发生。当我运行我的存储过程(巨大的过程)时,它返回:

General SQL error. Cannot insert duplicate key row in object 'dbo.TitleClient' with unique index 'XAK1TitleClient'. Cannot insert the value NULL into column 'id_title', table 'Database.dbo.TitleCom'; column does not allow null, insert fails.

我是否有可能从导致这个表中删除数据?或者这是不可能的?

2 个答案:

答案 0 :(得分:3)

dbo.TitleClient是否有标识列?您可能需要运行

DBCC CHECKIDENT('dbo.TitleClient')

我猜第一条消息

  

无法插入重复的键行   对象'dbo.TitleClient'具有唯一性   index'XAK1TitleClient'

是因为种子值与现有表值和第二条错误消息

不同步
  

无法将值NULL插入   列'id_title',表   'Database.dbo.TitleCom'专栏   不允许null,插入失败。

来自第一个语句中插入scope_identity结果失败的尝试。

答案 1 :(得分:0)

您如何干净地“清理”数据?

  • 如果某些表仍有数据,则可能导致问题。
  • 特别是如果您有触发器导致进一步插入。

让您进一步调查。

  • 获取存储过程的主体,并逐位运行。
  • 最终,您将看到产生错误的实际声明。
  • 当然,如果此时你没有插入dbo.TitleClient,那肯定会引发问题。
  • 无论哪种方式:现在您可以轻松检查先前在过程中插入的数据,以找出根本原因。