DB/mysql
FOREIGN KEY ?
이건욱
2020. 4. 23. 14:41
FOREIGN KEY는 두 개의 테이블에 대해서 링크를 걸 수가 있습니다.
자식 테이블은 부모 테이블의 기본키를 참조하고 있습니다.
따라서 테이블에서 추가를 했을 때 제약조건을 설정할 수가 있습니다.
[예시]
CREATE TABLE `parent` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_count` int(11),
PRIMARY KEY (`id`)
);
CREATE TABLE `child` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`child_count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`parent_id`) REFERENCES `parent`(`id`)
)
위와 같은 예시에서는 child Table에서 parent_id가 parent table 에서 id를 참조 하고 있습니다.
따라서 child 테이블에 INSERT 했을 때 parent_id가 parent에 존재 하지 않는 값이면 에러가 납니다.
만약에 이름을 지정해주고 싶으실 경우에서는 다음과 같이 할수가 있습니다.
CREATE TABLE `child` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`child_count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT fk_child FOREIGN KEY (`parent_id`)
REFERENCES `parent`(`id`)
)
테이블을 이미 생성했을 때에는 다음과 같이 진행 할수 있습니다.
ALTER TABLE child
ADD CONSTRAINT fk_child FOREIGN KEY (`parent_id`)
REFERENCES `parent`(`id`);
외래키를 삭제 하고 싶은 경우에는 다음과 같이 진행 할수 있습니다.
ALTER TABLE child
DROP FOREIGN KEY fk_child;