我有一個當前複製到三個不同位置的數據庫。它用於應用程序,所有表格,存儲過程和文章也被選中以進行復制。無法執行存儲過程,但存儲過程中的更新語句工作
當我嘗試更新ContactCSR,通過存儲的過程中,我得到以下錯誤:
Msg 2627, Level 14, State 1, Procedure UpdateContactCSRs, Line 14 Violation of PRIMARY KEY constraint 'PK_ContactCSRs'. Cannot insert duplicate key in object 'dbo.ContactCSRs'. The duplicate key value is (3443001, dand). The statement has been terminated..
存儲過程的內容如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UpdateContactCSRs] @Contact int,
@CSR varchar(50),
@Memo varchar(max),
@Notify bit,
@OldCSR varchar(50)
AS
BEGIN
UPDATE ContactCSRs SET CSR = @CSR,Memo = @Memo, Notify = @Notify WHERE Contact = @Contact AND CSR = @OldCSR;
END
然而,我當在其工作的過程中運行更新命令。
不完全確定爲什麼會發生這種情況,即使update語句有效,存儲過程也不起作用。
這裏是存儲過程的命令,我運行:
exec UpdateContactCSRs 3443001, 'dand','Relationship Manager',1,'AndyK'
而且這裏是我運行的是更新語句:
UPDATE ContactCSRs SET CSR = 'dand',Memo = 'Relationship Manager', Notify = 1 WHERE Contact = 3443001 AND CSR = 'AndyK'
您是否使用與存儲過程一起嘗試的完全相同的參數運行update命令? – Szymon
你確定你傳遞相同的參數給存儲過程和更新語句嗎?基本上,當您通過應用程序傳遞語句時,它可能與您手動運行更新語句時不同。 – logixologist
主鍵錯誤意味着您正在執行的UPDATE對這些字段有一個約束,要求它是唯一的,並且您已將其設置爲數據庫中已存在的某個約束。 – logixologist