본문 바로가기
SQL/oracle

oracle SQL - 제약 조건 추가 및 외래키 추가 옵션

by jun.s.gi 2023. 5. 31.
728x90

테이블 특정 열에 제약 조건을 추가하는 방법은 다음과 같습니다.

-- PK
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 PRIMARY KEY (열이름[,..]);

-- UK
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 UNIQUE (열이름[,..]);

-- CK
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 CHECK (열이름 조건);

-- NN
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 CHECK (열이름 IS NOT NULL);

-- FK
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 FOREIGN KEY (열이름)
REFERENCES 참조할 테이블(참조할 열);

 

참조의 무결성을 위해 외래키 추가 옵션엔 다음 두 가지가 있습니다.

1. ON DELETE SET NULL

 - 참조되는 값이 삭제되면 참조중인 데이터를 NULL로 변환합니다.

 (부모 데이터가 삭제되면 자식 데이터를 NULL로 바꿉니다.)

-- 생성 시

CREATE TABLE 테이블(
-- 인라인 (열 레벨)
칼럼1 NUMBER(2) CONSTRAINT 테이블_칼럼1_fk
		REFERENCES 참조테이블(참조 열)
                ON DELETE SET NULL,
칼럼2 NUMBER(2),

-- 아웃라인 (테이블 레벨)
CONSTRAINT 테이블_칼럼1_fk FORIEGN KEY (칼럼2) 
REFERENCES 참조테이블(참조 열)
ON DELETE SET NULL);



-- 추가 시
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 FORIEGN KEY(열 이름)
REFERENCES 참조테이블(참조 열)
ON DELETE SET NULL;

 

 

 

2. ON DELETE CASCADE

 - 참조되는 행이 삭제되면 참조중인 행도 같이 삭제합니다.

 (부모 행이 삭제되는 자식 테이블의 종속 행도 삭제합니다.)

-- 생성 시

CREATE TABLE 테이블(
-- 인라인 (열 레벨)
칼럼1 NUMBER(2) CONSTRAINT 테이블_칼럼1_fk
		REFERENCES 참조테이블(참조 열)
                ON DELETE CASCADE,
칼럼2 NUMBER(2),

-- 아웃라인 (테이블 레벨)
CONSTRAINT 테이블_칼럼1_fk FORIEGN KEY (칼럼2) 
REFERENCES 참조테이블(참조 열)
ON DELETE CASCADE);



-- 추가 시
ALTER TABLE 테이블 ADD
CONSTRAINT 제약조건이름 FORIEGN KEY(열 이름)
REFERENCES 참조테이블(참조 열)
ON DELETE CASCADE;
728x90

'SQL > oracle' 카테고리의 다른 글

oracle SQL - 뷰 (VIEW)  (0) 2023.06.12
oracle SQL - 인덱스  (2) 2023.06.06
oracle SQL - 삭제된 테이블 복구  (0) 2023.05.31
oracle SQL - 테이블 수정 ALTER  (0) 2023.05.30
oracle SQL - TIMESTAMP, INTERVAL  (0) 2023.05.30