728x90
1. 테이블
CREATE TABLE `tb_board` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`writer_id` int NOT NULL,
`writer` varchar(20) NOT NULL,
`delete_yn` varchar(1) DEFAULT 'N',
`create_date` datetime DEFAULT NULL,
`views` int DEFAULT '0',
`image` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `writer_id` (`writer_id`),
CONSTRAINT `tb_board_ibfk_1` FOREIGN KEY (`writer_id`) REFERENCES `tb_userinfo` (`id`) ON DELETE CASCADE
)
CREATE TABLE `tb_comment` (
`id` int NOT NULL AUTO_INCREMENT,
`board_id` int NOT NULL,
`content` text NOT NULL,
`writer_id` int NOT NULL,
`writer` varchar(20) NOT NULL,
`create_date` datetime NOT NULL,
PRIMARY KEY (`id`)
)
2. 외래키(FK) 추가
ALTER TABLE board.tb_comment ADD FOREIGN KEY(board_id) REFERENCES board.tb_board(id);
- tb_comment의 board_id컬럼이 tb_board 테이블의 id 값을 참조하도록 설정
- ALTER TABLE 참조하는 테이블 ADD FOREIGN KEY(참조하는 컬럼명) REFERENCES 참조받는 테이블(참조받는 컬럼명);
ALTER TABLE board.tb_comment ADD FOREIGN KEY(board_id) REFERENCES board.tb_board(id) ON DELETE CASCADE;
- 참조받는 테이블의 데이터가 삭제되면 참조하는 테이블의 데이터도 삭제하고 싶을 때 ON DELETE CASCADE를 맨 뒷 부분에 추가하면 된다.
3. 제약조건 확인
SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = 'board';
'DataBase > MySQL' 카테고리의 다른 글
[DataBase] Spring Boot 게시판 프로젝트 ERD (0) | 2022.01.26 |
---|---|
[MySQL] Inner Join (0) | 2022.01.07 |
[MySQL] 참조 데이터 삭제 시 같이 삭제 - CASCADE (0) | 2021.12.20 |
[DataBase] MySQL 복합키 설계 (0) | 2021.12.18 |
[MySQL] 테이블 삭제 및 데이터 삭제 (0) | 2021.12.16 |