본문 바로가기
Database

[오라클] 부모 자식 테이블 및 제약조건

by 서피 2021. 3. 10.

부모 자식 테이블 관계

두 테이블간 특정 컬럼을 부모-자식관계로 연동시킬 수 있다.

이 경우 부모 테이블의 해당 컬럼에는 자식 컬럼에 있는 값만이 입력될 수 있다.

 

테이블 값이 제거될 때

자식 테이블의 데이터가 삭제될 때, 연동된 부모 테이블 값을 어떻게 처리할 지를 정의해주어야 한다.

부모 테이블을 생성할 때 이를 설정할 수 있다.

부모 테이블의 값은 삭제하는데 제한이 없다.

 

 

1. ON DELETE SET NULL

create table shop_buy(
    buy_no number primary key,
    user_id varchar2(20) REFERENCES shop_member (user_id) on delete set null, -- shop_member 제거시 null로 설정
    product varchar2(20),
    buy_date date
);

부모 테이블 shop_buy를 생성한다.

user_id컬럼에는 shop_member테이블의 user_id컬럼 값만 들어올 수 있다.

자식 테이블(shop_member)의 user_id가 삭제될 때, shop_buy테이블의 해당 user_id를 null 로 설정한다.

 

 

 

2. ON DELETE CASCADE

create table shop_buy(
    buy_no number primary key,
    user_id varchar2(20) REFERENCES shop_member (user_name) on delete cascade,  -- shop_member 제거시 데이터 삭제
    product varchar2(20),
    buy_date date
);

부모 테이블 shop_buy를 생성한다.

user_id컬럼에는 shop_member테이블의 user_id컬럼 값만 들어올 수 있다.

자식 테이블(shop_member)의 user_id가 삭제될 때, shop_buy테이블의 해당 user_id가 있는 모든 행을 삭제한다.

 

 

댓글