插入记录时为什么会出现此错误:具有唯一键的记录的重复值

时间:2013-08-01 18:45:36

标签: .net sql informix

让我解释一下......

当将记录插入informix数据库表时,如果我为其中一个列指定了一个值,无论该值是什么,它总是会抛出以下错误(这个小小的信息是金色的并且花了我一段时间弄清楚)。该列是char(4)。我可以告诉该领域没有唯一的关键索引(使用松鼠)。表格中有许多其他列我正在设置值,但没有这个问题。

ERROR [HY000] [Informix][Informix ODBC Driver][Informix]ISAM error:  duplicate value for a record with unique key.

Error: Could not insert new row - duplicate value in a UNIQUE INDEX column.

我必须在桌面架构中找到一些东西......任何人都可以指出我在哪里以及如何找到这个“假定”的唯一密钥失败(最好使用松鼠)?我已经查看了“主键”选项卡和“索引”选项卡下的对象窗口,并且列中未列出任何一列。

我可以根据squirrel提供有关表模式的更多信息: 没有主键,有10个索引,其中没有索引与出现问题的列绑定。在10个索引中,只有1个是唯一索引。

2 个答案:

答案 0 :(得分:1)

这些问题通常是由触发器引起的。我会检查是否有可能导致问题的触发器。

答案 1 :(得分:0)

你说:

  

如果我为其中一列指定了一个值,无论该值是什么,它都会抛出[-239 / -100]错误。

请记住,当您插入表格时,会插入整行。即使您只为其中一列指定了值,也会将默认值(通常为NULL)插入到其他列中。

(我也有可能误解你的意思;你可能会说,如果你指定除了一个特定列之外的所有列的值,INSERT会起作用;如果你也指定了特定列的值,INSERT总是失败。您可能需要运行SELECT COUNT(*), COUNT(DISTINCT problem_column) FROM <table>来帮助确定问题。)

  

没有主键。有10个索引,其中没有一个与存在问题的列相关联。在10个索引中,只有1个是唯一索引。

您有一个唯一索引(事实上它是主键,即使它未被声明为主键)。如果您没有在INSERT语句中指定该列的值,则可能是插入了NULL,并且表中只能有一行在该列中包含NULL。 Informix不支持'UNIQUE UNLESS NULL'。

请注意,表上的10个索引是一个很大的数字;我需要一些说服力,除非它们是外键列上的索引,否则超过3个它们会减轻它们的重量。

要获得更多帮助,您需要发布:

  1. 表的架构(或架构的合适子集,并指示缺少多少列)。
  2. 您正在执行的INSERT语句。