1

我有一个当前复制到三个不同位置的数据库。它用于应用程序,并且所有表、存储过程和文章也被选择进行复制。

当我尝试通过存储过程更新 ContactCSR 时,出现以下错误:

消息 2627,级别 14,状态 1,过程 UpdateContactCSRs,第 14 行违反主键约束“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

但是,当我在过程中运行更新命令时,它可以工作。

不完全确定为什么会发生这种情况,即使更新语句有效,存储过程也不起作用。

这是我正在运行的存储过程命令:

exec UpdateContactCSRs 3443001, 'dand','Relationship Manager',1,'AndyK'

这是我正在运行的更新语句:

UPDATE ContactCSRs SET CSR = 'dand',Memo = 'Relationship Manager', Notify = 1 WHERE Contact = 3443001 AND CSR = 'AndyK'
4

1 回答 1

0

如果在存储过程调用中指定了参数名,还会报错吗?

exec UpdateContactCSRs @Contact = 3443001, @CSR = 'dand', @Memo = 'Relationship Manager', @Notify = 1, @OldCSR = 'AndyK'
于 2013-09-25T01:38:46.517 回答