2

让我解释更多...

将记录插入到 informix 数据库表中时,如果我为其中一列指定了一个值,无论该值是什么,它总是会抛出以下错误(这个小小的信息花絮是金色的,我花了一段时间才弄清楚)。该列是一个字符 (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 个是唯一索引。

4

2 回答 2

1

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

于 2013-08-08T17:34:41.183 回答
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 语句。
于 2013-08-02T03:31:10.740 回答