2017-02-19 3 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

단일 쿼리에서 무엇을하려고합니까? 행이 있으면 업데이트하고 그렇지 않으면 새 행을 삽입 하시겠습니까? 또는 이미 삽입되어 있지 않으면 삽입하면됩니까? – Tim

+0

이미있는 경우 -> 행 ID를 가져오고, 그렇지 않으면 -> 새 행 ID를 삽입하고 가져옵니다. –

관련 문제