Programming/Database
update / insert 처리시 @@rowcount 사용하기
역시인생한방
2015. 7. 21. 15:51
하나의 프로시져로 입력과 수정을 같이 처리하는 경우가 종종 있는데 굳이 Update, Insert를 분기 처리 하지 않고 다음처럼 한번에 처리 할 수 있다.
update table1 set column1 = @column1 where id = @id
if @@rowcount = 0
begin
insert into table1(column1) values(@column1)
end
사실 위 코드는 다음과 같이 처리 하는게 조금 더 좋다.
이런식의 분기 처리는 lock 비교를 적게 하기 때문 조금 더 좋은 퍼포먼스를 보여준다고 한다.
if exists(select * from table1 with(nolock) where id = @id) begin
update table1 set column1 = @column1 where id = @id
end esle begin
insert into table1 (column1) values (@column1)
end