您好,感谢您的阅读,可能对我也有帮助
对我的问题的简要说明:
我正在使用IBExpert将数据从一个火鸟数据库复制到另一个数据库(称为V14)。这些表的名称相同,并且具有相同的结构。为了解释起见,我将把包含旧数据库A中的数据的表称为B,而我想要将数据插入其中的表应称为B。
因此,唯一要做的就是从表A中取出所有数据并将它们插入到表B中。这样做的一小段代码是:
INSERT into [V14].BSMZ SELECT * FROM BSMZ执行此操作后,我收到错误消息(在传输了一些行之后):
无效的insert或update值:对象列受到约束-任何两个表行都不能有重复的列值。尝试在唯一索引"UI_BSMZ“中存储重复值(对活动事务可见)
此唯一索引包含2个数据列,适用于表B和表A。
有多个行导致此问题,但也会根据需要传输多个行。我已经证实,不能插入到表B中的行在其唯一键列中具有值,而这些值在表B中并不存在。
(为了测试的目的,我确实从表B中删除了约束,但我仍然得到相同的错误消息,这让我更加困惑)
我真的不确定是什么导致了这个问题,并希望得到一些提示。
发布于 2014-09-12 14:45:07
你得到了确切的错误信息唯一索引"UI_BSMZ“查找唯一约束的声明-它不是关于从B到A的外键这是表中某些字段的约束
在源数据库中,对此UK UI_BSMZ中字段运行查询
SELECT UK_FIELD_1, UK_FIELD_2, .. FROM TABLE_NAME GROUP BY UK_FIELD_1, UK_FIELD_2, .. HAVING COUNT(*)>1 PLAN (TABLE_NAME NATURAL)如果此查询返回一些行-源数据库中的索引已损坏-或不存在
要修复索引(在删除重复项之后)-请运行以下命令:
Alter Index INDEX_NAME ACTIVE;这将重建您的索引
https://stackoverflow.com/questions/21880352
复制相似问题