我必须重组表
的所有索引我收到以下错误
SQL错误[23505]:由DELETE语句引起的INSERT语句,UPDATE语句或外键更新中的一个或多个值无效,因为" 2&标识的主键,唯一约束或唯一索引#34;约束表" GMS4.SMS_PHYSICAL_CUSTOMER_DATA"来自索引键的重复值.SQLCODE = -803,SQLSTATE = 23505,DRIVER = 4.16.53 由DELETE语句引起的INSERT语句,UPDATE语句或外键更新中的一个或多个值无效,因为主键,唯一约束或唯一索引由" 2"约束表" GMS4.SMS_PHYSICAL_CUSTOMER_DATA"来自索引键的重复值.SQLCODE = -803,SQLSTATE = 23505,DRIVER = 4.16.53
DB2 Version 10
请帮助..
答案 0 :(得分:1)
我假设你在这里使用DB2 for Linux / Unix / Windows。
您的问题不在于您需要重新调整表格。问题是您正在尝试插入一行,但该表上有一个唯一索引,这会阻止插入。
您可以使用此查询查看索引的名称及其唯一的列:
SELECT
I.INDSCHEMA
,I.INDNAME
,C.COLNAME
FROM SYSCAT.INDEXES I
JOIN SYSCAT.INDEXCOLUSE C
ON I.INDSCHEMA = C.INDSCHEMA
AND I.INDNAME = C.INDNAME
WHERE I.IID = @indexID
AND I.TABSCHEMA = @tableSchema
AND I.TABNAME = @tableName
ORDER BY C.COLSEQ
;
您可以从错误消息中获取此查询所需的所有参数。在这种情况下,@indexId
为2
,@tableSchema
为GMS4
,@tableName
为SMS_PHYSICAL_CUSTOMER_DATA
。