1

現在、3 つの異なる場所にレプリケートされているデータベースがあります。これはアプリケーションに使用され、すべてのテーブル、ストアド プロシージャ、およびアーティクルも複製対象として選択されます。

ストアド プロシージャを使用して ContactCSR を更新しようとすると、次のエラーが発生します。

メッセージ 2627、レベル 14、状態 1、プロシージャ 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'
4

1 に答える 1

0

ストアド プロシージャの呼び出しでパラメーター名を指定した場合でも、エラーが発生しますか?

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