코딩 공부/SQL

DataBase - ON DELETE CASCADE 이해하기

유미._. 2023. 5. 14. 20:31
728x90

 

 

ON DELETE CASCADE 란?

 

ON DELETE CASCADE는 쉽게 말해서, 어떤 tuple이 삭제 될 때, foreign key로 연결된 tuple 또한 같이 삭제 되는 것이다.

A tuple을 삭제하더라도 B tuple의 foreign key에 내용이 남아있다면 데이터의 무결성이 깨지게 된다. 그렇기 때문에 ON DELETE CASCADE를 사용함으로서 데이터의 무결성을 지켜주어야 한다. 

 

 

ON DELETE CASCADE 실습

 

ON DELETE CASCADE를 사용하기 위해선 A 테이블이 unique 하거나 primary 여야 한다. 

member 테이블을 생성해 주고, memberId에 primary key를 선언해 주었다.

 

create table member(
memberId varchar2(50),
memberPw varchar2(100) not null,
memberName varchar2(30) not null,
memberMail varchar2(100),
memberAddr1 varchar2(100),
memberAddr2 varchar2(100),
memberAddr3 varchar2(100),
adminCk number not null,
regDate DATE not null,
money number not null,
point number not null,
primary key(memberId)
);

 

 

이후에 B 테이블에 ON DELETE CASCADE를 추가해 주면 된다.

Test를 위해 cart_test 테이블을 생성해 주었다.

 

CREATE TABLE cart_test(
    cartnum NUMBER(10) PRIMARY KEY,
    memberId VARCHAR2(20) CONSTRAINT CART_test_memberId_FK REFERENCES MEMBER(memberId) ON DELETE CASCADE,
    amount NUMBER(5)
);

 

 

데이터의 값을 하나 넣어 주었다.

 

insert into cart_test(cartnum, memberid, amount)
values('12','유미','1');

 

 

데이터가 들어갔는지 확인 해 보았다.

 

SELECT * FROM cart_test;

 

 

잘 들어간게 보인다.

 

 

 

A 테이블 값에 있는 '유미' 라는 정보를 삭제해 본다.

 

delete from member where memberId = '유미';

 

A테이블과, B 테이블 두 곳 모두 값이 지워지는지 확인해 본다.

 

SELECT * FROM member;
SELECT * FROM cart_test;

 

member 테이블 ↓↓↓ 

사라진 유미!!!!! o((>ω< ))o 1

 

 

cart_test 테이블 ↓↓↓ 

사라진 유미!!!!! o((>ω< ))o 2

 

 

 

 

 

 

이해도 잘 안되고 어렵게만 생각했던 문법들을 실제로 테스트 해보며 결과를 확인해보니 훨씬 이해하기 쉽고 재미있게 다가왔다. 따따봉 👍

 

✍(◔◡◔)

 

 

728x90
반응형

'코딩 공부 > SQL' 카테고리의 다른 글

ORACLE 문제 풀이[4]  (0) 2023.05.11
ORACLE 문제 풀이[3]  (0) 2023.05.10
ORACLE 문제 풀이[2]  (0) 2023.05.09
ORACLE 문제 풀이[1]  (0) 2023.05.08
SQL 초기 설정 (Oracle)  (0) 2023.04.12