[Error 일기] SQL pk를 fk로 연동하기

Zero·2022년 8월 18일
0

MySQL

목록 보기
5/5

이슈 발생

위의 코드로 foreign key로 지정하려니 error가 떴다.

해결

alter table [테이블명] 
add foreign key( [컬럼명] ) 
references [참조한 테이블]( [참조할 컬럼명] ) [옵션];

<<제약조건>>
1. CASCADE

  • 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.
  1. SET NULL
  • 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다.
  1. NO ACTION
  • 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다.
  1. SET DEFAULT
  • 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다.
  1. RESTRICT

# 니의 코드
create table orders (
	ordnum int primary key auto_increment,
	id varchar(20) not null,
	orddate timestamp not null,
    pnum int not null,
    ispay bool not null,
	pamount int not null
);

alter table orders
 add foreign key( id ) references member(id)
 on delete cascade on update cascade;
    
alter table orders
 add foreign key( pnum ) references product(pnum)
 on delete cascade on update cascade;

테이블을 우선 생성하고, 수정하면 되는 일이었다.

에러가 뜨지도 않고, order table과 product table 사이에 연동도 잘되더라.

profile
코딩 일기

0개의 댓글