問題のデバッグに 1 日を費やしましたが、問題がずっと続いていたことがわかりました。テーブルに、一意の値のみをカタログ番号として強制する一意の制約があります。しかし、私はこの場合に何がユニークであるかをよく理解していないようです. MP1156とMP1156ZFの 2 つの製品番号があります。
Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP115BP', 1, 0, 0, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP115', 1, 0, 1, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
Insert into IDWProductCodes( PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP15', 1, 1, 1, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
エラーが発生します:
メッセージ 2627、レベル 14、状態 1、行 5
UNIQUE KEY 制約 'UK_CNUMUNIQUE' の違反。オブジェクト 'dbo.IDWProductCodes' に重複するキーを挿入できません。重複キーの値は (MP115) です。
最初のキーを挿入してから2番目のキーを挿入しようとするたびに、SQLはそれらが同じであると想定し、最初のキーを2番目のキーで上書きします。これはまったく望ましくない効果です。
私が本当に欲しいのは、テーブルに異なる文字列 (重複なし) を入力できることです。一意の制約で十分だと思っていましたが、今はわかりません。この問題を解決するためのより良い、または最良のアプローチは何ですか?