MySQL

MySQL) 외래 키 제약 조건 설정에서 참조 무결성 변경하기 (RESTRICT , CASCADE , SET NULL , NO ACTION)

567Rabbit 2024. 5. 16. 16:33

 

데이터베이스에서 외래 키 제약 조건(foreign key constraint)설정이란

참조 무결성을 유지하기 위해 수행하는 작업을 말한다.

 

 

테이블 설정 밑에, foreign key로 이동한다.

 

 

 

오른쪽에 foreign key options가 있는데, 여기에서 변경하면 된다

 

 

 

1. RESTRICT (기본값)

  • 설명: 외래 키로 참조하는 행이 다른 테이블에서 참조되고 있을 때, 해당 행의 삭제나 업데이트를 제한한다
  • 동작: 만약 참조 무결성이 깨질 수 있는 경우, 삭제나 업데이트가 허용되지 않는다
  • 예제: 만약 학생 테이블의 특정 학생이 여러 성적 테이블에서 참조되고 있다면, 그 학생을 삭제하려고 할 때 오류가 발생하고 삭제가 되지 않는다

 

2. CASCADE   **중요**

  • 설명: 외래 키로 참조하는 행이 삭제되거나 업데이트될 때, 그 행을 참조하는 모든 행도 함께 삭제되거나 업데이트된다
  • 동작: 참조 무결성을 유지하기 위해 자동으로 관련된 행도 삭제하거나 업데이트한다
  • 예제: 만약 학생이 삭제되면, 그 학생과 관련된 모든 성적 기록도 자동으로 삭제된다

 

3. SET NULL

  • 설명: 외래 키로 참조하는 행이 삭제되거나 업데이트될 때, 그 외래 키 값을 NULL로 설정한다
  • 동작: 참조하는 테이블의 외래 키 컬럼을 NULL로 설정하여 참조 무결성을 유지한다
  • 예제: 만약 학생이 삭제되면, 그 학생의 성적 기록에서 학생 ID를 NULL로 설정한다

 

4. NO ACTION

  • 설명: RESTRICT와 비슷하지만, 실제로는 연기된 제약 조건을 확인하는 방식. 특정 시점까지는 아무런 제약을 가하지 않지만, 트랜잭션이 커밋되기 전에 참조 무결성을 검사
  • 동작: 즉시 제약 조건을 확인하지 않고, 트랜잭션 커밋 시점에 참조 무결성을 검사하여 문제가 있으면 오류를 발생
  • 예제: 트랜잭션 내에서 여러 작업을 수행할 때, 트랜잭션이 커밋될 때까지는 참조 무결성 제약 조건을 확인하지 않지만, 커밋 시점에 참조 무결성에 문제가 있으면 오류가 발생한다