在我的應用程序中,使用SQL Server 2005,我有兩個表,我們稱他們爲表A和表B;在表B中定義了一個外鍵約束,引用了表A中的主鍵列,這是一個自動生成的整數ID。我跑了以下簡單的交易:SQL Server合併複製導致外鍵失敗
Start transaction
Insert a row to table A
Retrieve the last-generated ID ("SELECT @@IDENTITY ... ")
Insert data to table B, using this ID
Commit
這一切運作良好,直到我試圖用另一個SQL Server 2005的發佈員和用戶創建合併複製(連續)試圖在現在這個失敗交易將數據插入到表B,因爲外鍵約束失敗的:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_TableB_TableA". The conflict occurred in database "MyDB", table "TableA", column 'ID'.
我不能讓它通過插入數據表。然而,除去合併複製後提交後的工作,一切工作。數據庫代碼是用C++編寫的,使用ADO。
無論如何,複製是否會干擾事務?任何其他可能的解釋?
謝謝!關於你的觀點 - 1.我正在使用自動身份管理。無論如何,這項活動非常稀少 - 我不認爲PK衝突是這裏的根本原因。 2.我在外鍵(在兩臺服務器上)應用了「NOT FOR REPLICATION」屬性,但似乎沒有改變這種情況。 – Itaypk