DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] Msg 8111, Cannot define PRIMARY KEY constraint on nullable column in table.

RYEAN 2020. 11. 24. 15:18
반응형

 


 

 

1. 오류 발생


 

 

 

 

2. 오류 원인


위 오류는 테이블에 PRIMARY KEY 를 추가하려고 할 때 발생하는 오류로,

PK 를 추가하려는 컬럼이 NULL 값을 허용하기 때문에 발생한다.

 

 

 

3. 오류 해결


해당 컬럼의 NULL 값 허용을 NOT NULL 로 변경하면 오류를 해결할 수 있다.

쿼리를 통해 직접 오류 발생 및 해결해보자.

 

 

(1) 아래와 같은 테이블과 데이터를 생성

--1. 테이블 생성
CREATE TABLE [dbo].TEST] (
   [ID] [int] NULL,
   [NAME] [char](3) NULL
);
--2. 데이터 삽입
INSERT INTO [TEST] VALUES (1,'JAN');
INSERT INTO [TEST] VALUES (3,'MAR');
INSERT INTO [TEST] VALUES (8,'AUG');
INSERT INTO [TEST] VALUES (4,'APR');
INSERT INTO [TEST] VALUES (6,'JUN');

 

 

 

(2) [TEST] 테이블의 컬럼 중 [ID] 라는 컬럼에 PK 추가 시도

ALTER TABLE [dbo].[TEST] ADD CONSTRAINT [PK_TEST_ID] PRIMARY KEY CLUSTERD ([ID] ASC);

 

 

(3) 오류 발생

메시지 8111, 수준 16, 상태 1, 줄 5
테이블 'TEST' 의 Null 허용 열에 PRIMARY KEY 제약 조건을 정의할 수 없습니다.
메시지 1750, 수준 16, 상태 0, 줄 5
제약 조건 또는 인덱스를 만들 수 없습니다. 이전 오류를 참조하십시오.

 

Msg 8111, Level 16, State 1, Line 5
Cannot define PRIMARY KEY constraint on nullable column in table 'TEST'.
Msg 1750, Level 16, State 0, Line 5
Could not create constraint or index. See previous errors.

 

 

(4) [ID] 컬럼의 NULL 허용 여부를 NOT NULL 로 변경

ALTER TABLE [dbo].[TEST] ALTER COLUMN [ID] int NOT NULL;

 

 

 

위 쿼리 실행 후 다시 PRIMARY KEY 를 추가 시도하면 정상 적용되는 것을 확인할 수 있다.

 

 

 

 

반응형