0

SQL Server 2008 데이터베이스 테이블에 고유 제한 조건이 있으며 제약 조건에 4 개의 열이 포함되어 있습니다. 일부 테스트 데이터를 입력하는 동안 예기치 않게 고유 한 제약 조건 위반이 발생했습니다. 네 개의 열에 대해서는 숫자로 입력하고 값 세트를 삽입하고 숫자를 증가시킨 다음 (예 : (1,1,1,1) (2,2,2,2, ...) 등) . 위반이 10이되었을 때 발생했습니다. 지금 번호를 입력하면 제약 조건을 위반하게됩니다. 그런 다음 문자 'A'만 입력하여 시도하고 'A'로 시작하는 단어를 삽입하려고 시도하여 위반했습니다. 제약 조건에서 뭔가를 변경해야합니까, 아니면 실제로 어떻게 작동 할 것입니까?단일 문자 삽입시 고유 제한 조건 위반

ALTER TABLE [dbo].[Table] ADD CONSTRAINT [UC_Table_Column1_Column2_Column3_Column4] 
UNIQUE NONCLUSTERED 
(
    [Column1] ASC, 
    [Column2] ASC, 
    [Column3] ASC, 
    [Column4] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,  
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON 
[PRIMARY] 
+0

4 개의 '열'필드의 정의는 무엇입니까? 그들은 1 문자 이상을 허용합니까? –

+0

각 열 1에서 4까지는 char (1)로 설정되어 있습니까? –

+0

VARCHAR (50) NOT NULL, VARCHAR (50) NOT NULL, INT NOT NULL, VARCHAR (25) NOT NULL – user2023116

답변

0

정상적으로 작동합니다. 실제 테이블 정의 란 무엇입니까? 당신의 대조는 무엇입니까?

-- Working Example 
CREATE TABLE dbo.[Table](
     Column1 VARCHAR(50) 
    , Column2 VARCHAR(50) 
    , Column3 INT 
    , Column4 VARCHAR(25) 
); 

ALTER TABLE [dbo].[Table] ADD CONSTRAINT [UC_Table_Column1_Column2_Column3_Column4] 
UNIQUE NONCLUSTERED 
(
    [Column1] ASC, 
    [Column2] ASC, 
    [Column3] ASC, 
    [Column4] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,  
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON 
[PRIMARY] 

DECLARE @iteration INT = 0; 

WHILE @iteration < 20 
BEGIN 
    INSERT INTO [dbo].[Table] 
    SELECT @iteration, @iteration, @iteration, @iteration; 

    SET @iteration += 1; 
END; 

SELECT * FROM [dbo].[Table];