DBMS/MySQL 5.1

My-SQL 5.1 외래키 지정하기

본클라쓰 2010. 3. 30. 09:41

 

테이블 간의 기본키와 외래키를 지정하여 기본키 값을 가진 데이터가 삭제될 때 참조하는 테이블의 데이터를 삭제하거나 Null로 변경할 수 있는 방법입니다. 기본키를 가진 테이블이 부모 테이블이 되고 외래키로 참조하는 테이블이 자식테이블이 되며 두 테이블 모두 타입이 'innodb'이어야 합니다.

 

 

1. 부모 테이블

 

 

2. 자식 테이블 

 

 

부모테이블이 기본키를 지정한 후 자식 테이블에서 참조키를 선언합니다. 두 테이블 모두 type=innodb 로 지정합니다. 자식 테이블에서 참조를 지정하는 방법은 위의 구문과 같습니다. on delete 구문은 두개의 값을 가질 수 있는데 'cascade' 와 'set null' 값입니다. cascade는 부모 테이블에서 데이터가 삭제시 참조테이블의 데이터도 같이 삭제되는 것을 지정하는 값입니다.

 

위의 두 테이블을 생성한 후 테이블 스키마를 확인한 화면입니다.  

 

 

위 두 테이블에 실제 값을 삽입한 화면입니다.  

 

 

이 때 기본키를 가진 부모 테이블에서 데이터를 삭제하면 참조키를 가진 자식 테이블의 데이터도 함께 삭제되어집니다.

 

 

※ 주의

위 두 테이블은 부모-자식 관계를 가지고 있습니다. 자식테이블이 존재하는데 부모 테이블을 삭제할 수 없습니다. 부모를 먼저 삭제할 시 My-SQL5.1 은 다음과 같은 에러 코드를 출력합니다.

 

Cannot delete or update a parent row : a foreign key constraint fails.