[Oracle] 오라클 컬럼 PK 추가, 변경, 제거 방법
- 데이터베이스/오라클
- 2024. 5. 11.
오라클에서 테이블의 PK(Primary Key)를 추가, 변경 또는 삭제를 하기 위해서는 ALTER TABLE CONSTRAINT 명령어를 사용하면 된다. PK로 추가할 칼럼은 NULL 값이 존재하면 안 되며, PK로 추가할 칼럼 조합은 해당 테이블에서 유일한 값이어야 한다. 이미 생성된 PK에 칼럼을 추가하거나 뺄 때는 기존 PK를 삭제 후 다시 생성하는 방법을 사용한다.
목차 |
테이블 PK 추가 방법
ALTER TABLE scott.emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno);
ALTER TABLE [스키마명].[테이블명] ADD CONSTRAINT [PK명] PRIMARY KEY ([칼럼],[칼럼], [칼럼] ...);
ALTER TABLE 명령어를 사용해서 PK를 생성할 수 있다. PK로 추가할 칼럼은 NULL 값이 없어야 하며, 칼럼 조합이 테이블에서 유일한 값이어야 한다.
테이블 PK 변경 방법
-- 변경할 PK 삭제
ALTER TABLE scott.emp DROP CONSTRAINT emp_pk;
-- PK 칼럼을 변경 후 재생성
ALTER TABLE scott.emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno, ename);
PK 칼럼을 추가하거나 빼기 위해서는 기존 PK를 삭제하고 다시 생성해야 한다. ALTER TABLE MODIFY 명령어로는 칼럼을 추가하거나 뺄 수는 없다.
PK 칼럼을 변경할 때는 추가할 칼럼의 값이 NULL이 존재하면 안 되며, PK 칼럼 조합이 해당 테이블에서 유일한 값이어야 한다. PK 변경 시 아래의 오류가 발생하지 않도록 해야 한다.
ALTER TABLE scott.emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno, ename) 오류 보고 - ORA-01449: 열이 NULL값을 포함하고 있습니다 NOT NULL로 변경할 수 없습니다 |
PK에 추가할 칼럼에 NULL 값이 존재하면 위의 오류가 발생한다. NULL 값을 찾아서 특정 값으로 모두 UPDATE 한다.
ALTER TABLE scott.emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno, ename) 오류 보고 - ORA-02437: (SCOTT.EMP_PK)을 검증할 수 없습니다 - 잘못된 기본 키입니다 |
PK에 추가할 칼럼 조합의 값이 테이블에서 유일한 값이 아닐 경우 발생하는 오류이다. PK 칼럼 조합을 다시 하던지, 칼럼의 값을 테이블에서 유일한 값이 되도록 UPDATE 한다.
테이블 PK 제거 방법
ALTER TABLE scott.emp DROP CONSTRAINT emp_pk;
ALTER TABLE [스키마명].[테이블명] DROP CONSTRAINT [PK명];
테이블 생성 시 PK 설정 방법
CREATE TABLE emp
(
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2),
CONSTRAINT emp_pk PRIMARY KEY (empno)
)
테이블 생성 시 PK를 설정하고 싶을 때는 CREATE TABLE 구문에 CONSTRAINT PRIMARY KEY 구문을 추가하면 된다. 위의 방법을 사용하면 테이블 생성 시 PK도 같이 생성된다.