尽管是唯一的,但将数据添加到具有主键的现有表是否违反了唯一约束?

时间:2021-08-01 22:43:30

标签: sql oracle primary-key

我正在尝试将新数据添加到我创建的数据库中,但是,尽管 PK 列中的数据是唯一的,但在添加到表时我仍然收到错误“ORA-00001”。

如何向主列添加新数据,或者每次都需要禁用约束?

我试图通过:

UPDATE Specialists 
SET Specialist_ID = 210000000005, 
    First_Name = 'Aaron', 
    Last_Name = 'Black', 
    Specialist_Category = 'Software', 
    Cases_In_Progress = 0;

我已经尽可能具体地使用 Google 搜索以缩小搜索结果的范围,但我无法找到仅将新数据添加到现有表的 PK 列中的答案。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您的代码显然违反了 primary key 约束。这是出于以下两个原因之一:

  • 已经有一行主键具有您要为其分配的值。
  • 您的更新更新了不止一行。

我会选择后者。

假设 Specialist_ID 是主键,您可能打算

UPDATE Specialists
    SET First_Name = 'Aaron',
        Last_Name = 'Black',
        Specialist_Category = 'Software',
        Cases_In_Progress = 0
    WHERE Specialist_ID = 210000000005;

无论如何,没有 UPDATE 子句的简单 WHERE 是可疑的,因为它会更新表中的所有行。