๐ข๏ธDB/MySQL
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค MySQL - foreign key์ on delete cascade ์ค์ ๋ฐฉ๋ฒ๊ณผ ๋์ ๋ฐฉ๋ฒ
๋ฃจ๋ฆฌ์ผใ
2023. 12. 4. 11:49
๋ฐ์ํ

MySQL์์ ON DELETE CASCADE๋
์ธ๋ ํค(foreign key) ์ ์ฝ ์กฐ๊ฑด์์ ์ฌ์ฉ๋๋ ์ต์
์ค ํ๋์ด๋ค.
์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ฐธ์กฐํ๋ ํ
์ด๋ธ์์ ํ์ ์ญ์ ํ ๋,
ํด๋น ํ์ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ด๋ จ๋ ํ๋ ์๋์ผ๋ก ์ญ์ ๋๋ค.
์๋ฅผ ๋ค์ด, USER ํ
์ด๋ธ๊ณผ PHOTOS ํ
์ด๋ธ์ด ์๊ณ ,
PHOTOS ํ
์ด๋ธ์ ์ธ๋ ํค๊ฐ USER ํ
์ด๋ธ์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
USER ํ
์ด๋ธ์ ํ์ด ์ญ์ ๋๋ฉด, ์ด์ ์ฐ๊ด๋ PHOTOS ํ
์ด๋ธ์ ํ๋ ์๋์ผ๋ก ์ญ์ ๋๋ค.

foreign key์
on delete cascade ์ค์ ๋ฐฉ๋ฒ
1. ์ธ๋ ํค(foreign key) ์ค์
ํด๋น ํ
์ด๋ธ ์ค์ ์ ๋ค์ด๊ฐ์ Foreign Key๋ฅผ ์๋ก ์์ฑํ๋ฉด์
Foreign Key Options - on Delete : ๋ฅผ CASCADE๋ก ์ ํํ๋ค.


2. index ์ํธ์์ foreign ํค ์์ฑ๋ ๊ฒ์ ํ์ธ

3. USER ํ
์ด๋ธ์์ id 2๋ฒ์ ์ญ์ ํ๋ฉด
PHOTOS ํ
์ด๋ธ ์์๋ user_id = 2๊ฐ ์ญ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
delete from users
where id = 2;
select * from users;

select *
from photos
where user_id = 2;

CASCADE ๋์๋ฐฉ๋ฒ ์ ๋ฆฌ
- A ํ
์ด๋ธ์์ ํ์ด ์ญ์ ๋๋ฉด,
ํด๋น ํ์ ์ฐธ์กฐํ๋ B ํ ์ด๋ธ์ ํ๋ ์๋์ผ๋ก ์ญ์ ๋๋ค. - ๋ง์ฝ ์ญ์ ํ๋ ค๋ A ํ
์ด๋ธ์ ํ์ ์ฐธ์กฐํ๋ B ํ
์ด๋ธ์ ํ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด,
์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ค.