具有唯一索引和主键的列给出唯一约束违规
Posted
技术标签:
【中文标题】具有唯一索引和主键的列给出唯一约束违规【英文标题】:Column with Unique Index and Primary Key gives Unique Constraint Violation 【发布时间】:2015-02-03 16:51:47 【问题描述】:我刚刚在 PL/SQL Devloper 上创建了一个表。我创建的表有一个 ID 列。对于本专栏,我设置了一个主键 (PK_ID)。该列还有一个名为 PK_ID 的唯一索引。
我试图通过这样写来插入到这个表中:
INSERT INTO ADMIN.MESSAGE_LIST (TEXT, TEXTER, ID)
VALUES ('This is a Test','Tim', 1);
我收到错误“ORA-00001:违反唯一约束 (ADMIN.PK_ID)”
我在表中没有其他插入(当前为空),我认为插入 1 因为 ID 是唯一的。
我也没有设置序列和触发器来自动增加 ID 列,因为老实说我不知道如何编辑表来做到这一点(这就是为什么我刚刚插入 ID 为 1 作为测试)。
如果表为空,为什么我不能插入 ID 为 1 的内容?在那种情况下,它不会仍然是独一无二的吗?
(注意:在不包含 ID 和值 1 的情况下运行命令会给我一个错误,提示我无法在 ID 列中插入“NULL”)
【问题讨论】:
该表似乎不太可能是空的。如果表中有另一行ID
为 1,您只会收到该错误。
下一行是否有分号和/
,导致语句被执行两次?然后,您会在错误消息之前看到“插入了 1 行”。 (或尝试插入 null 的两条错误消息)。
【参考方案1】:
请执行一个简单的语句:
select * from admin.message_list where id = 1;
如果它不返回行,您应该检查约束 PK_ID 是否引用 ID 列,如果是,请请求 Oracle 支持修复错误。
【讨论】:
以上是关于具有唯一索引和主键的列给出唯一约束违规的主要内容,如果未能解决你的问题,请参考以下文章