2017-02-19 13 views
-1

(id, value)のテーブルをフィールドとして使用すると、valueは常に一意でなければなりません。SQL Serverで重複行識別子を取得する方法

重複行を挿入しようとすると、すでにDBに存在する行識別子(ここではid)を取得するにはどうすればよいですか?単一のクエリでできますか?私が今やっている

ブルート力がある:

- insert into table 
- if @GetGeneratedKeys returns 0, then row is already present 
- make another query to get that row 

編集:新しい行のためIDIDが存在するかどうか照会するので、可能ではない@GetGeneratedKeys注釈を使用してかどうか、自動生成され

+0

Mybe IF EXISTS'を意味していますが、 'ID'が存在するかどうかを確認して別のIDを挿入したいのですか? – Sami

+0

'' 'ID''は' '' @ GetGeneratedKeys'''アノテーションを使って自動生成されますので、 '' 'ID''が存在するかどうかを問い合わせることはできません。 –

答えて

0
DECLARE @ExistingID integer; 
SELECT @ExistingID = [ID] FROM [MyTable] WHERE [Value] = @SomeValue; 
IF @ExistingID IS NULL BEGIN 
    --It does not exist yet, do something 
END ELSE BEGIN 
    --It already exists and @ExistingID holds the ID, do something 
END 
+0

これをシングルクエリで実行する方法はありますか? –

+0

1回のクエリで何をしようとしていますか?存在する行を更新したい場合は、新しい行を挿入しますか?または、それがまだ存在しない場合は挿入するだけですか? – Tim

+0

既に存在する場合は - >行IDを取得し、そうでなければ - >新しい行のIDを挿入して取得します。 –

関連する問題