[MySQL] ALTER 를 통하여 PRIMARY KEY 와 FOREIGN KEY의 추가와 삭제 조건
joheamin2025. 2. 27. 13:47
SQL에선 ALTER 라는 DDL문을 통해 제약조건들을 추가, 삭제를 할 수 있다.
이때 특히 서로 다른 테이블의 관계를 지어주는 역할인 FOREIGN KEY 와 PRIMARY KEY의 변경은
ALTER에 대한 조건이 있다.
어느 경우에 FOREIGN KEY 와 PRIMARY KEY의 ALTER 가 실행이 되고 안되는지를 살펴보겠다.
🔷 참조 관계를 형성할 테이블 생성
◾ 부모 테이블 생성과 데이터 삽입
CREATE TABLE parent(
parent_id int,
name varchar(10)
);
insert into parent values(1,'AA');
insert into parent values(2,'BB');
insert into parent values(3,'CC');
insert into parent values(4,'DD');
insert into parent values(5,'EE');
◾ 자식 테이블 생성
CREATE TABLE child(
child_id INT,
name VARCHAR(10),
parent_id_fk INT
);
insert into child values(1,'aa',1);
insert into child values(2,'bb',2);
insert into child values(3,'cc',3);
insert into child values(4,'dd',4);
insert into child values(5,'ee',5);
🔷 PRIMARY KEY 생성
◾ parent 테이블과 child 테이블 각각에 생성
ALTER TABLE parent ADD PRIMARY KEY(parent_id);
ALTER TABLE child ADD PRIMARY KEY(child_id);
❓ PRIMARY KEY 가 생성이 안되는 경우
PRIMARY KEY가 되는 컬럼의 값 중 중복되는 값이 있는 경우 => PRIMARY KEY 는 중복 허용 ❌
🔷 FOREIGN KEY 생성
◾child에 parent 의 PRIMARY KEY를 참조하는 FOREIGN KEY 생성
ALTER TABLE child ADD CONSTRAINT FOREIGN KEY(parent_id_fk)
REFERENCES parent (parent_id);