我有一个表,其中已经在名为LoginId的字段上设置了约束。在插入新行时,我在与此字段关联的此constratint(LoginID)上收到错误,指出以下错误。
insert命令如下: 输入序列为
的1insert 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
答案 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中查找和删除重复项,
null
应该有用。Ctrl + a
您现在应该能够将文件中的记录导入数据库。