반응형
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 를 추가 시도하면 정상 적용되는 것을 확인할 수 있다.
반응형
'DBMS > SQL Server (MS-SQL)' 카테고리의 다른 글
[SQL Server / MS-SQL] 제약조건 (Constraint) (0) | 2022.05.17 |
---|---|
[SQL Server / MS-SQL] Msg 15581, 이 작업을 수행하기 전에 데이터베이스에서 마스터 키를 만들거나 세션의 마스터 키를 여십시오. (0) | 2021.07.07 |
[SQL Server / MS-SQL] PK 없는 테이블 중복 데이터 제거 (6) | 2020.08.12 |
[SQL Server / MS-SQL] Microsoft SQL Server 로그인 오류 18456 (1) | 2020.07.24 |
[SQL Server / MS-SQL] WITH(NOLOCK) 사용법, 주의할 점, 공유잠금 (2) | 2020.07.17 |