SQL Server 2008을 사용하고 있습니다. 고유 한 순차 번호를 생성 할 수 있습니까? NEWID()의 특성과 식별 컬럼을 표시해야합니다. 이는 항상 고유하지만 후속 값이 이전 값보다 큼을 의미합니다. 그것은 고유하지 않기 때문에 datetime/datetime2 일 수 없습니다.순차적 NEWID()
감사합니다.
SQL Server 2008을 사용하고 있습니다. 고유 한 순차 번호를 생성 할 수 있습니까? NEWID()의 특성과 식별 컬럼을 표시해야합니다. 이는 항상 고유하지만 후속 값이 이전 값보다 큼을 의미합니다. 그것은 고유하지 않기 때문에 datetime/datetime2 일 수 없습니다.순차적 NEWID()
감사합니다.
ROWVERSION
데이터 유형은 기본 키로 사용하기에 적합하지 않지만 한 가지 가능성이 있습니다. 자동으로 설정됩니다.
또 다른 옵션은 직접 작성하는 것입니다. 필요한 너비의 열이있는 테이블을 가지며 값을 원자 적으로 증분하여 반환하는 코드가 있어야합니다. 적절한 잠금 또는 트랜잭션을 사용하면 기본 키로 적합 할 값을 생성 할 수 있습니다.
SQL CLR 기능과 비슷한 기능을 수행 할 수도 있습니다. 그렇게 효율적으로 만들 수도 있습니다. 예를 들어, 현재 시간을 사용할 수 있지만 리턴 된 마지막 값은 정적으로 저장할 수 있습니다. 그런 다음 다음 값이 마지막 값과 같으면 1 씩 증가시킵니다.
SQL Server 2008의 UNIQUEIDENTIFIER 열에 대한 기본값으로 newsequentialid()
을 정의 할 수 있습니다. 불행히도 그게 모두 가능합니다.
CREATE TABLE dbo.MyTable
(
ID UNIQUEIDENTIFIER DEFAULT (newsequentialid())
......
)
당신은 사용을 순차적 uniqueidentifiers에 대한 기본 제약 조건이 있어야합니다
그래도 NewSequentialId() 시퀀스에는 빈번한 갭이있을 것입니다. http://stackoverflow.com/questions/738801/sql-server-2008-newsequentialid-problem#10696208 – StuartLC
CREATE TABLE demo_table (
demo_id uniqueidentifier NOT NULL,
demo_value int
);
ALTER TABLE demo_table ADD CONSTRAINT dc_demo
DEFAULT NEWSEQUENTIALID()
FOR demo_id;
:-(다른 방법을 순차적 ID의 (GUID를) 생성하는 방법은 없습니다. 불행하게도
의 제한 NEWSEQUENTIALID()
은 시스템 재부팅 후에 시퀀스가 보장되지 않는다는 것입니다.
01의 주요 목표는은 B-tree 삽입이 빠른이고 컴퓨터 재부팅 문제는 영향을 미치지 않습니다. 이 여기에 설명되어 있습니다 :
당신은 NEWID()
, NEWSEQUENTIALID()
및 IDENTITY
사이의 성능 비교에 대한이 문서 확인하실 수 있습니다 : "The Code Project: Performance Comparison - Identity() x NewId() x NewSequentialId을".
다시 시작한 후에는 단조롭게 증가하기 때문에 숫자 IDENTITY를 사용하십시오. NEWSEQUENTIALID는 이것을 지원하지 않습니다.
당신이 자신의 결합 된 칼럼을 발명하지 않으면 케이크를 먹을 수 없습니다. 그러나, 이것은 사용하는 것이 더 넓고 더 복잡하게 만듭니다.
IDENTITY와 NEWSEQUENTIALID는 모두 내부 용 (예 : 사람이 읽을 수 없음)이어야하므로이 요구 사항이 필요한 이유는 무엇입니까?
"NEWID()"의 속성 (예 : 세계적으로 고유 한 *)은 무엇을 의미합니까? –
guid가 현재 구현에서 실제로 전역 적으로 고유하지는 않지만 적어도 통계적으로 고유하다는 것을 알고 있습니다. 꾸준히 증가하는 가치와 함께, 그 자산은 사라졌습니다. 여기서 실제로 해결하고자하는 문제는 무엇입니까? –
"글로벌 고유 순차 번호"는 정적 GUID (서버에 대해 한 번 생성)와 일반 ID (숫자) 열을 결합하기 만하면됩니다. –