사용자 작업 수를 유지하는 테이블이 있습니다. 작업이 완료 될 때마다 값을 늘려야합니다. 사용자는 동시에 여러 개의 세션을 가질 수 있으므로 다중 사용자 문제를 피하려면 프로세스가 절대적이어야합니다.SQL Server : 행이없는 경우 하나의 열의 값이 증가합니다.
ActionCode
추가하는 함수에UserID
내가ActionCode
를 전달하려는int
Count
int
뿐만 varchar
로하고 UserID
:
테이블은 3 열이 새로운 행 하나도 존재하지 않는 경우, count를 1로 설정합니다. 행이 존재하면, 카운트가 1만큼 증가합니다. ActionCode
및 UserID
이이 테이블의 기본 고유 색인을 구성합니다.
내가 할 필요가 모든 업데이트가 있었다면, 나는이 같은 간단한 일 (AN UPDATE
쿼리가 이미 원자 때문에) 할 수있는 : 나는 SQL에서 원자 거래에 새로 온 사람
UPDATE (Table)
SET Count = Count + 1
WHERE ActionCode = @ActionCode AND UserID = @UserID
합니다. 이 질문은 아마도 여기 여러 부분에서 답변을 얻었지만 그 중 하나를 찾아내는 데 어려움을 겪고 있습니다. 이러한 작업이 자주 발생할 수 있기 때문에 복잡한 작업없이 빠르게 처리 할 수 있어야합니다.
편집 : 죄송합니다. 속은 MySQL how to do an if exist increment in a single query 일 수 있습니다. 나는 수색을 많이했지만 수색은 tsql
이었습니다. 일단 내가 대신 sql
으로 바꿨다면 그 결과가 최고였습니다. 그것은 원자 (atomic)인지는 분명하지 않지만 그것이 확실 할 것이라고 확신합니다. 다른 사람들이이 질문과 답변에 의해 추가 된 새로운 가치가 있다고 생각하지 않는 한, 아마도 이것을 속임수로 지우겠다고 투표 할 것입니다.
사용중인 RDBMS를 명확히 설명해 주시겠습니까? –
상단에 수정 사항이 추가되었습니다 (MS SQL Server 2008). – eselk
감사합니다. "sql-server"및/또는 "sql-server-2008"태그를 포함하면 일반적으로 도움이됩니다. –