0

SQL Server をデータベースとして使用して、C# でプロジェクトに取り組んでいます。問題は、私のプロジェクトに毎回単一の値を返すアルゴがあることです。これはデータベースに保存されます(プロジェクトの要件として)。アルゴが値を繰り返す場合、必要のないデータベースにも保存され (重複)、問題が発生します。一意の値が発生したときに一度しか保存されないという問題を克服するために助けが必要です。データベースに繰り返しはありません。その列を主キーにしようとしましたが、主キー違反の例外が見つかりました。

4

1 に答える 1

4

インラインまたはストアド プロシージャで EXISTS クエリを使用するだけです

クエリ プロシージャは、行が既に存在するかどうかを確認できます。

編集:ああ、申し訳ありませんが、NOTを忘れてしまいました。それはばかげているでしょう:D

IF NOT EXISTS(SELECT UniqueValue FROM UniqueValuesTable WHERE UniqueValue = @NewValue)
  INSERT INTO UniqueValuesTable VALUES (@NewValue)

編集:これが機能していることを示すSQLフィドルです

http://sqlfiddle.com/#!3/b87f9/3

Demsが指摘したように、操作はアトミックではないため、マルチセッションの状況ではPK違反が依然として発生する可能性があります

代替手段は次のとおりです。

INSERT INTO UniqueValuesTable SELECT @NewValue WHERE NOT EXISTS (SELECT UniqueValue FROM UniqueValuesTable WHERE UniqueValue = @NewValue)
于 2012-06-19T18:39:59.500 に答える