단일 데이터 조각이 업데이트 또는 삽입의 키로 실행되는지 여부를 확인하는 SQL

페이지 업데이트 :
페이지 생성 날짜 :

키가 있는 경우 업데이트나 키가 없는 경우 삽입과 같은 프로세스에서는 일반적으로 키를 기반으로 선택이 수행되며 프로세스는 하나의 케이스가 있는지 여부를 확인하여 결정됩니다. SQL Server 2008은 또한 단일 문으로 업데이트 및 삽입(및 삭제)을 수행할 수 있는 "병합" 문을 추가합니다. 그러나 이것은 두 테이블의 비교이며 단일 데이터에는 적합하지 않습니다.

실제로 select 문으로 레코드 수를 확인할 필요없이 업데이트 및 삽입을 결정하여 행을 쉽게 업데이트 할 수있는 방법이 있습니다.

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

여기서 핵심 단어는 "@@ROWCOUNT"입니다. @@ROWCOUNT는 이전 SQL이 적용된 행 수를 검색할 수 있습니다. 앞의 코드는 Update 문을 먼저 실행하고, 업데이트된 경우 @@ROWCOUNT 1 이상을 반환하므로 다음 Insert 문을 실행하지 않습니다. 반대로 Update 문에서 행이 업데이트되지 않으면 @@ROWCOUNT 0을 반환하므로 Insert by IF 문 판단을 실행합니다.

위의 SQL은 템플릿이므로 적절한 시간에 업데이트할 열 이름과 값을 바꿉니다. @value 단지 변수 이름이므로 업데이트하려는 값으로 바꿉니다.