위의 코드로 foreign key로 지정하려니 error가 떴다.
alter table [테이블명]
add foreign key( [컬럼명] )
references [참조한 테이블]( [참조할 컬럼명] ) [옵션];
<<제약조건>>
1. CASCADE
- 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.
- SET NULL
- 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다.
- NO ACTION
- 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다.
- SET DEFAULT
- 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다.
- RESTRICT
- 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.
출처 : https://prinha.tistory.com/entry/MySQL-PRIMARY-KEY-FOREIGN-KEY-설정하는-다양한-방법
# 니의 코드
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 사이에 연동도 잘되더라.