mysql foreign key

yun·2023년 8월 31일
post-thumbnail

테이블 생성 시 FK 추가

다음과 같이 테이블을 생성한 후,

create table orders
(
	oid int not null,
	order_no varchar(16),
	pid int,
	primary key (oid),
	foreign key (pid) references person(pid)
);

foreign key를 사용하는 이유는 RDB에서 데이터의 일관성을 유지하기 위해서이다.

그런데 사실 이렇게 만들면 foreign key의 constraint symbol이 orders_ibfk_1 형태로 자동생성된다.

이후에 사용하기 편하려면 아래와 같이 수정해주자.

alter table로 constraint symbol 추가

alter table orders add constraint fk_orders_person foreign key (pid) references person(pid);

fk_orders_person: orders 테이블에서 person을 참조하는 fk라는 뜻의 naming convention

alter table로 fk 삭제

foreign key를 삭제한다고 하자.

alter table orders drop foreign key fk_orders_person

그러고 나서 desc로 삭제를 확인해 보면

여전히 MUL로 key 표시가 남아 있다.

mysql에서 index가 없는 컬럼에 foreign key 조건을 줄 때 index를 자동생성해 주기 때문이다.

key 속성이 남아있을 때 특별히 이슈는 없다고 하는데... 확실히 지우고 싶으면 key도 삭제 해주도록 하자

alter table orders drop key fk_orders_person;

key 삭제 확인

한번에 삭제하는 법

alter table orders drop foreign key fk_orders_person, drop key fk_orders_person;

0개의 댓글