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.