-1

SQL Serverでは、テーブル変数を使用しており、操作が完了したら、PKでもあるID列を持つ実際のテーブルにその値を挿入します。

私が作成しているテーブル変数には2つの列があります。物理テーブルには4つあり、最初の列はID列、整数IKです。挿入する列のデータ型は、ターゲット列のデータ型と同じです。

 INSERT INTO [dbo].[Message] ([Name], [Type])
 SELECT DISTINCT [Code],[MessageType] 
 FROM @TempTableVariable    

これは次の場合に失敗します。

一意のインデックス「IX_Message_Id」を持つオブジェクト「dbo.Message」に重複するキー行を挿入できません。重複するキー値は(ApplicationSelection)です。

しかし、値(...)だけを挿入しようとすると、問題なく機能します。

どうすれば正しくできますか?

4

1 に答える 1

0

データ「ApplicationSelection」はすでにデータベースにあるようです。すでにデータベースにあるレコードを除外するには、selectを作成する必要があります。存在しない句または左結合を使用して、これを行うことができます。インデックスを調べて、ID以外に一意のフィールドを確認します。これにより、レコードが現在存在するかどうかを確認するためにチェックする必要のあるフィールドがわかります。

于 2012-07-02T15:16:16.900 に答える