[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 제약조건을 걸어두면 함께 삭제할 수 있습니다.
'DB, SQL' 카테고리의 다른 글
도커 컨테이너 MariaDB의 외부 접근 허용하기 (0) | 2021.10.16 |
---|---|
[MariaDB] 데이터베이스 유저 정보 확인 명령어 (0) | 2021.10.15 |
[mariadb] 테이블의 select 출력 결과로 insert 하기 (0) | 2021.07.14 |
[MariaDB] MariaDB 덤프하기 (데이터베이스 옮기기) (1) | 2021.07.05 |
[MariaDB] MariaDB 환경 변수 설정하기 (0) | 2021.07.04 |