테이블 간의 기본키와 외래키를 지정하여 기본키 값을 가진 데이터가 삭제될 때 참조하는 테이블의 데이터를 삭제하거나 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.
'DBMS > MySQL 5.1' 카테고리의 다른 글
My-SQL 데이터베이스에 DATE (날짜) 처리 방법 (0) | 2010.01.06 |
---|---|
테이블명 변경, 필드 변경 (0) | 2009.11.04 |
MySQL5.0에서 auto_increment 사용할 때 주의할 점 (0) | 2009.11.03 |
Timestamp 와 DateTime 형 사용시 주의 사항 (0) | 2009.10.09 |
데이터 백업과 복구 (0) | 2009.09.16 |