NVARCHAR(50)
열 을 포함하는 고유 키가있는 테이블이 있습니다 (올바르거나 그렇지 않지만 있습니다). 따라서 삽입을 시도 Șc
하거나 C
( 삽입 순서와 상관없이) 삽입 문제로 인해 두 번째 삽입에서 파손됩니다. 오류는 다음과 같습니다.
(1 개의 행 영향을 받음) 메시지 2601, 수준 14, 상태 1, 줄 16 고유 인덱스 'IX_TestT'를 사용하여 'dbo.testT'개체에 중복 키 행을 삽입 할 수 없습니다. 중복 키 값은 (C)입니다.
반품 선택 :
데이터베이스 기본 데이터 정렬은 Latin1_General_CI_AS
입니다. 기존 구조를 너무 많이 변경하지 않고 해결 방법을 찾는 데 시간을 보냈지 만 작업 방법을 찾지 못했습니다. 다른 데이터 정렬 및 조합을 시도했지만 모든 것이 실패합니다. 문자 확장 등에 대해 ( here 및 here ) 읽고 여전히 붙어 있습니다. 다음은 문제를 복제하는 데 사용하는 샘플 코드입니다.이 문제를 해결하는 데 도움이되는 것을 자유롭게 수정하고 추천하십시오.
CREATE TABLE testT (
[Default_Collation] [NVARCHAR] (50) COLLATE DATABASE_DEFAULT,
[Latin1_General_CI_AS] [NVARCHAR] (50) COLLATE Latin1_General_CI_AS,
[Latin1_General_CI_AI] [NVARCHAR] (50) COLLATE Latin1_General_CI_AI,
[SQL_Collation] [NVARCHAR] (50) COLLATE SQL_Latin1_General_CP1_CI_AS);
CREATE UNIQUE CLUSTERED INDEX [IX_TestT] ON [dbo].[testT] ([Default_Collation])
ON [PRIMARY]
GO
INSERT INTO testT
SELECT N'Șc', --COLLATE Latin1_General_CI_AS
N'Șc', --COLLATE Latin1_General_CI_AS
N'Șc', --COLLATE Latin1_General_CI_AS
N'Șc' --COLLATE Latin1_General_CI_AS
INSERT INTO testT
SELECT N'C' --COLLATE Latin1_General_CI_AS
,N'C' --COLLATE Latin1_General_CI_AS
,N'C' --COLLATE Latin1_General_CI_AS
,N'C' --COLLATE SQL_Latin1_General_CP1_CI_AS
SELECT * FROM testT;
DROP TABLE testT;