Sybase抱怨重复插入,不存在

时间:2012-10-04 17:52:17

标签: tsql sybase

我已将DB_1中的SOURCE表中的一些记录移动到另一个DB_2中的ARCHIVE表中(即将SOURCE中的记录插入ARCHIVE,然后从SOURCE中删除记录。)

我的SOURCE表创建了以下索引SOURCE_1

CREATE UNIQUE NONCLUSTERED INDEX SOURCE_1
    ON dbo.SOURCE(TRADE_SET_ID, ORDER_ID)

问题是 - 当我尝试从ARCHIVE中将行插回SOURCE时,Sybase会抛出以下错误:

Attempt to insert duplicate key row in object 'SOURCE' with unique index 'SOURCE_1'

当然,随后插入失败了。

我确认我的SOURCE表没有这些重复项,因为以下查询返回空:

select * from DB_1.dbo.SOURCE
join DB_2.dbo.ARCHIVE
on DB_1.dbo.SOURCE.TRADE_SET_ID = DB_2.dbo.ARCHIVE.TRADE_SET_ID
AND DB_1.dbo.SOURCE.ORDER_ID = DB_2.dbo.ARCHIVE.ORDER_ID

如果上面的查询没有返回任何内容,那么这意味着我没有违反我对2列的唯一索引约束,但Sybase抱怨我有。

有没有人对为什么会这样做有任何想法?

1 个答案:

答案 0 :(得分:1)

如果Sybase在这方面与SQL Server类似(我比较熟悉),我会怀疑索引阻止了插入。尝试在归档版本上禁用索引(以及任何其他索引或自动增量列),然后再将其复制到该版本,然后重新启用。 Sybase可能会尝试自动为插入创建ID,这会干扰现有记录。