데이터베이스에서 외래 키 제약 조건(foreign key constraint)설정이란
참조 무결성을 유지하기 위해 수행하는 작업을 말한다.
테이블 설정 밑에, foreign key로 이동한다.
오른쪽에 foreign key options가 있는데, 여기에서 변경하면 된다
1. RESTRICT (기본값)
- 설명: 외래 키로 참조하는 행이 다른 테이블에서 참조되고 있을 때, 해당 행의 삭제나 업데이트를 제한한다
- 동작: 만약 참조 무결성이 깨질 수 있는 경우, 삭제나 업데이트가 허용되지 않는다
- 예제: 만약 학생 테이블의 특정 학생이 여러 성적 테이블에서 참조되고 있다면, 그 학생을 삭제하려고 할 때 오류가 발생하고 삭제가 되지 않는다
2. CASCADE **중요**
- 설명: 외래 키로 참조하는 행이 삭제되거나 업데이트될 때, 그 행을 참조하는 모든 행도 함께 삭제되거나 업데이트된다
- 동작: 참조 무결성을 유지하기 위해 자동으로 관련된 행도 삭제하거나 업데이트한다
- 예제: 만약 학생이 삭제되면, 그 학생과 관련된 모든 성적 기록도 자동으로 삭제된다
3. SET NULL
- 설명: 외래 키로 참조하는 행이 삭제되거나 업데이트될 때, 그 외래 키 값을 NULL로 설정한다
- 동작: 참조하는 테이블의 외래 키 컬럼을 NULL로 설정하여 참조 무결성을 유지한다
- 예제: 만약 학생이 삭제되면, 그 학생의 성적 기록에서 학생 ID를 NULL로 설정한다
4. NO ACTION
- 설명: RESTRICT와 비슷하지만, 실제로는 연기된 제약 조건을 확인하는 방식. 특정 시점까지는 아무런 제약을 가하지 않지만, 트랜잭션이 커밋되기 전에 참조 무결성을 검사
- 동작: 즉시 제약 조건을 확인하지 않고, 트랜잭션 커밋 시점에 참조 무결성을 검사하여 문제가 있으면 오류를 발생
- 예제: 트랜잭션 내에서 여러 작업을 수행할 때, 트랜잭션이 커밋될 때까지는 참조 무결성 제약 조건을 확인하지 않지만, 커밋 시점에 참조 무결성에 문제가 있으면 오류가 발생한다
'MySQL' 카테고리의 다른 글
MySQL) Instargram (1) : 태그, 좋아요, 팔로우 데이터 입력하기 (0) | 2024.05.17 |
---|---|
MySQL) 3개 이상의 테이블 조인하기 (0) | 2024.05.16 |
MySQL) 두 개의 테이블 조인하기 (2) | 2024.05.16 |
MySQL) 데이터베이스 DATE(날짜) 가공하는 함수 (0) | 2024.05.16 |
MySQL) Reverse, Char_length, Ifnull 함수 사용하기 (0) | 2024.05.14 |