我有一个当前复制到三个不同位置的数据库。它用于应用程序,并且还选择所有表,存储过程和文章进行复制。
当我尝试通过存储过程更新ContactCSR时,出现以下错误:
Msg 2627,Level 14,State 1,Procedure UpdateContactCSRs,第14行 违反PRIMARY KEY约束'PK_ContactCSRs'。无法插入 对象'dbo.ContactCSRs'中的重复键。重复的键值是 (3443001,dand)。该声明已被终止..
存储过程的内容如下:
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'
答案 0 :(得分:0)
如果在存储过程调用中指定参数名称,是否仍会出现错误?
exec UpdateContactCSRs @Contact = 3443001, @CSR = 'dand', @Memo = 'Relationship Manager', @Notify = 1, @OldCSR = 'AndyK'