如果您因为唯一性约束而无法向表中插入新记录,请不要错过阅读本文。 它将帮助您解决这个问题。
在本文中,我们将介绍 4 种方法来解决由于违反表的唯一约束而无法插入新记录的问题 SQL Server.
真实案例:
现在让我们看一个真实的案例。 我们有一个名为“Product”的数据库,还有一个名为“DataNumen数据库中的产品”。 表中有“ProductId”和“ProductName”两个字段,数据类型分别为“int”和“varchar”。 而“ProductId”是一个具有唯一约束的主键。
目前表中有一些记录,如下:
图1 表中的记录“DataNumen产品”
假设数据库有两个 DBA,即 Jim 和 Tom。 一天,Jim删除了表中的第一条记录,如下:
DELETE FROM DataNumenProduct WHERE ProductId=1;
第二天,Tom向表中插入了一条新记录,该记录与删除的记录具有相同的主键,如下所示:
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
所以我们的表有如下记录,如下:
图 2 表中的更新记录“DataNumen产品”
现在如果 Jim 想将删除的记录恢复到表中,就会违反主键“ProductId”的唯一约束。 在这种情况下,我们可以使用以下解决方法之一来解决问题。
解决方法 1:修改新记录的主键以防止冲突
我们可以将要插入的记录的主键修改为一个新值,该值与表中所有现有记录的主键不同。 以上例为例,对于要插入的记录,我们可以将主键值从1修改为5,然后将新生成的记录恢复回表,如下:
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
下面是表中的最终记录:
图3 表中最终记录“DataNumen 产品”
解决方法 2:修改现有记录的主键以防止冲突
- 首先,我们需要更新现有记录的主键值,这可能会导致冲突,如下所示:
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
以下是表中的更新记录:
图 4 表中的更新记录“DataNumen 产品”
- 然后我们可以将删除的记录恢复回表中,如下:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
现在让我们看看最终版本,如下所示:
图 5 最终记录表“DataNumen 产品”
解决方法 3:禁用唯一约束速度rar简单地通过 SQL
- 为了解决这个问题,我们可以删除表tempo中的主键约束“pk”rar顺便说一句,如下:
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- 然后我们可以将删除的记录添加回表中,如下:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
现在让我们看看表中的记录:
图 6 表中的更新记录“DataNumen 产品”
- 那么由于两条记录有相同的主键值,我们需要修改其中一条以防止冲突,如下:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- 最后,我们将主键约束“pk”添加回表中,如下所示:
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
现在表中有一些记录,如下:
图 7 表中的更新内容“DataNumen 产品”
解决方法 4:禁用唯一约束速度rar通过 SQL Server 管理工作室:
- 首先,我们通过GUI删除表中的主键约束“pk”,如下:
图 8 通过 GUI 删除主键约束“pk”
- 然后我们将实际删除的记录插入到表中,如下所示。
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
现在表中有一些记录,如下:
图 9 表中的更新内容“DataNumen 产品”
- 然后我们修改表中已有记录的主键值,如下:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- 最后,我们通过 GUI 将主键约束“pk”添加回表中,如下所示:
图 8 通过 GUI 添加回主键约束“pk”
解决 SQL Server 数据库损坏
除了 Unique 约束, SQL Server 腐败 也是一个很常见的问题,很烦DBA。 通常我们可以使用 SQL Server 内置命令来解决损坏。 但是,如果它们不起作用,那么我们可以求助于某些第三方 SQL Server 数据恢复工具。
作者简介:
Jim Hu 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 访问修复 以及 dbf 修复软件产品。 欲了解更多信息,请访问 datanumen.com









