> 데이터 베이스 > MySQL 튜토리얼 > ROW_NUMBER()를 사용하여 SQL Server 2005에서 비식별 열을 자동 증가시키려면 어떻게 해야 합니까?

ROW_NUMBER()를 사용하여 SQL Server 2005에서 비식별 열을 자동 증가시키려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-27 01:10:10
원래의
867명이 탐색했습니다.

How Can I Auto-Increment a Non-Identity Column in SQL Server 2005 Using ROW_NUMBER()?

SQL Server 2005에서 자동 증가를 위해 ORDER BY 없이 ROW_NUMBER() 사용

SQL Server 2005에서 비-값 자동 증가 ROW_NUMBER()로 작업할 때 ID 열이 어려울 수 있으며 적합한 ORDER BY 기준. 그러나 대안이 있습니다:

Constant Order By 절과 함께 ROW_NUMBER() 사용:

유효한 ORDER BY 필드가 없더라도 ROW_NUMBER()는 다음과 결합될 수 있습니다. 자동 증가를 모방하는 상수 주문 절:

INSERT dbo.TargetTable (ID, FIELD)
SELECT
   Row_Number() OVER (ORDER BY (SELECT 1))
      + Coalesce(
         (SELECT Max(ID) FROM dbo.TargetTable WITH (TABLOCKX, HOLDLOCK)),
         0
      ),
   FieldValue
FROM dbo.SourceTable
WHERE {somecondition};
로그인 후 복사

이것은 이 방법은 ID 열의 고유성을 보장하면서 명시적인 순서를 피합니다.

주의 사항: 원래 순서가 보장되지 않음:

이 방법은 ID 열의 고유성을 보장하지 않는다는 점에 유의하는 것이 중요합니다. 원래 SourceTable 순서를 보존합니다. 외부 쿼리의 ORDER BY와 같은 다른 요소가 결과 순서에 영향을 미칠 수 있습니다.

동시성에 대한 고려 사항:

잠금 힌트(TABLOCKX 및 HOLDLOCK)가 동시 프로세스가 쿼리 실행 단계 사이에 동일한 ID를 삽입하는 것을 방지하기 위한 쿼리입니다. 그러나 이 접근 방식은 ID 열을 사용하는 것만큼 효율적이지 않으며 해결 방법으로만 고려해야 합니다.

권장 솔루션: ID 열 사용:

최적의 성능과 동시성에서는 자동 증가에 ID 열을 사용하는 것이 좋습니다.

위 내용은 ROW_NUMBER()를 사용하여 SQL Server 2005에서 비식별 열을 자동 증가시키려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿