現在、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'