没有重复但仍然是约束违规错误

时间:2011-05-18 12:42:52

标签: oracle oracle11g

我有一个表,其中已经在名为LoginId的字段上设置了约束。在插入新行时,我在与此字段关联的此constratint(LoginID)上收到错误,指出以下错误。

insert命令如下: 输入序列为

的1
insert into TemplateModule
(LoginID,MTtype, Startdate TypeId, TypeCase, MsgType, MsgLog, FileName,UserName, CrID, RegionaltypeId)
values 
(MODS_SEQ.NEXTVAL,3434,2843,2453,2392,435,2390,'pension.txt','rereee',454545,3434);
Failed with error

没有序列的类型2是硬编码值::

insert into TemplateModule
(LoginID,MTtype, Startdate TypeId, TypeCase, MsgType, MsgLog, FileName,UserName, CrID, RegionaltypeId)
values
(3453,3434,2843,2453,2392,435,2390,'pension.txt','rereee',454545,3434)

我多次交叉检查重复。但没有找到。可能是根本原因

ORA-00001: unique constraint error (LGN_INDEX)violated

3 个答案:

答案 0 :(得分:2)

首先,对该表上的LGN_INDEX进行描述,以确保您正在查看正确的列。 LGN_INDEX是约束+索引还是只是一个索引?尝试重新构建索引以确保它没有损坏。确保您没有任何可能干扰的其他约束。

其次,执行SELECT MAX(LOGINID) FROM TEMPLATEMODULE并将其与下一个序列值进行比较,以确保您的序列设置不低于您正在使用的最大ID。

第三,检查该表上是否有任何触发器。

如果这些都不起作用,请尝试仅使用架构重新创建表。交叉加载数据并重试。该表上可能存在导致该问题的配置设置。 CREATE TABLE MY_TEMP AS SELECT * FROM TEMPLATEMODULE

答案 1 :(得分:1)

我遇到了同样的问题。

将一个Integer值(不在表中)填充到主键列的Insert语句。

问题是与序列绑定的触发器之前。该序列的next_val已经存在于表中。

触发器触发,抓取序列号并因主键违规而失败。

答案 2 :(得分:0)

从excel文件导入时遇到了同样的问题。我认为该文件没有重复,直到我尝试删除excel中的重复项。

要在Excel中查找和删除重复项,

  1. 选择数据。 null应该有用。
  2. 点击Ctrl + a
  3. 选择数据库中具有约束的字段,然后单击“确定”
  4. Excel应根据上面步骤3中选择的字段删除任何重复记录。
  5. 您现在应该能够将文件中的记录导入数据库。