DB, SQL

[MariaDB] 댓글 처리 테이블 : 외래 키에 대해 테이블 다뤄보기

isaac.kim 2021. 7. 31. 19:55
728x90
반응형

[MariaDB] 댓글 처리 테이블 : 외래 키에 대해 테이블 다뤄보기

 

테이블 생성하기

seq_bno 값을 외래 키로 정합니다. tb_board 테이블의 seq_bno 값을 참조합니다.

다음은 SQL 쿼리문 외래 키 및 제약조건에 대한 내용을 테스트 하려고 합니다.

 

먼저 게시글 tb_board에 없는 seq_bno로 등록하려고 합니다. 외래 키에서는 참조할 값이 없으면 에러가 나타나겠죠.

 

INSERT INTO tb_reply (seq_bno, reply, replyer) VALUES ('999','TEST','TEST')

역시나 외래 키 조건에 걸려서 없는 값을 참조하지 못하기 때문에 등록되지 않는 것을 볼 수 있죠. 

 

tb_board 게시판에 있는 값을 insert 하기

데이터가 들어오는 것을 확인할 수 있습니다.

위에 외래 키에 관해서 ON UPDATE RESTRICT ON DELETE RESTRICT 제약 조건이 걸려 있는 것을 볼 수 있는데요.

 

tb_board 테이블에서 외래 키 제약에 걸려 있는 777 글을 삭제해보도록 하겠습니다.

 

DELETE FROM tb_board WHERE seq_bno = '777' 

tb_reply 테이블에서 외래 키로 잡고 있기 때문에 삭제되지 않습니다.

다시, tb_reply 테이블에 724 번 글에 대한 댓글을 추가해보았는데요.

이번엔 테이블 설정을 바꿔서 ON DELETE CASCADE 로 수정하여 진행해보겠습니다.

먼저 tb_board 테이블에는 seq_bno가 724인 값이 존재합니다.

tb_reply 테이블에도seq_bno가 724인 값이 존재합니다. 이제 tb_board에서 724인 값을 삭제하겠습니다.

board에서 724 를 삭제하고, reply의 값을 확인해보니 724에 대한 행이 삭제된 것을 확인할 수 있었습니다.

이렇듯 게시글을 삭제할 때 관련 댓글을 함께 삭제할 수 있습니다.

 

외래 키로 설정하되 CASCADE 제약조건을 걸어두면 함께 삭제할 수 있습니다.

728x90
반응형