레코드가 있으면 업데이트를 수행하는 저장된 proc을 작성했습니다. 그렇지 않으면 삽입을 수행합니다. 다음과 같이 보입니다.
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
이런 식으로 작성하는 논리는 업데이트가 where 절을 사용하여 암시 적 선택을 수행하고 0을 반환하면 삽입이 발생한다는 것입니다.
이 방법의 대안은 선택을 수행 한 다음 반환 된 행 수에 따라 업데이트 또는 삽입을 수행하는 것입니다. 업데이트를 수행하면 두 번의 선택이 발생하기 때문에 비효율적이라고 생각했습니다 (첫 번째 명시 적 선택 호출과 업데이트 위치에 두 번째 암시 적). 프로세서가 삽입을한다면 효율성에 차이가 없을 것입니다.
내 논리가 여기에 있습니까? 이것이 저장된 proc에 삽입 및 업데이트를 결합하는 방법입니까?