많은 경우 SQL Server의 일련 번호에서 고유 한 식별자를 얻어야합니다. 내가 가지고있는 것은 숫자 시리즈 이름, 최소값, 최대 값 및 현재 값을 포함하는 테이블입니다. 원자력 진술?
Series Min Max Current
-------------------------------------------
Testseries 1 999 23
는 이제 안전하게 현재 값을 증가시키고 출력하는
UPDATE ... OUTPUT
문을 사용하십시오. 다른 모든 접근법 (예 :
UPDATE
현재 및
SELECT
)은 조만간 경쟁 조건을 유발할 수 있습니다.
Series
로
DECLARE @newId INT
UPDATE Numberseries
SET
@newId = Current += 1
WHERE
Series = '...'
이 내가 하나 개의 단일 행을 업데이트 할 것입니다 임의의 지점에서 같이 일하는 것이가, 기본 키 :
는 지금은 다음 구문 거기에 발견.내 질문은 : 이것도 UPDATE ... OUTPUT
문과 같은 원자 적 연산으로 두 클라이언트가 동시 호출에서 동일한 값을 얻지 못하게 할 수 있습니까?
[시퀀스] (https://msdn.microsoft.com/en-us/library/ff878091.aspx)에 대한 설명을 읽어보십시오. SQL Server는 기본적으로 이러한 종류의 작업을 지원합니다. – Shnugo
@Shnugo 힌트를 보내 주셔서 감사합니다.하지만 불행히도 고객은 여전히 SQL Server 2008에 있습니다. –
@Shnugo 감사합니다. 잊어 버렸습니다. –