我已經將某些記錄從DB_1中的我的SOURCE表中移動到另一個DB_2中的ARCHIVE表中(即將記錄從源插入ARCHIVE,然後從源刪除記錄。)Sybase抱怨重複插入,如果不存在
我的源表具有以下索引創建爲SOURCE_1
:
CREATE UNIQUE NONCLUSTERED INDEX SOURCE_1
ON dbo.SOURCE(TRADE_SET_ID, ORDER_ID)
的問題是 - 當我嘗試將行插入回從歸檔源時,Sybase引發以下錯誤:
Attempt to insert duplicate key row in object 'SOURCE' with unique index 'SOURCE_1'
而且,當然,隨後插入失敗。
我證實,我的源表中沒有這些重複,因爲下面的查詢返回的空:
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聲稱我有。
有沒有人有任何想法,爲什麼發生這種情況?
我真的沒有看到任何錯誤(除了最後一個查詢中,第一個條件是DB2而不是DB_2)。你沒有任何公開的交易或任何事情,是嗎? –
一種可能性是空的。空值是唯一的,不會被該查詢找到。 – Paparazzi
亞當 - 雅是一個錯誤,但沒有公開交易。 Blam - 我確實有NULL,但我也在其他表中有NULL,並且沒有其他表的問題。 – czchlong