>  기사  >  데이터 베이스  >  MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

王林
王林앞으로
2023-05-27 17:19:133014검색

오늘 테이블을 디자인하기 위해 Navicat for mysql을 사용했을 때 외래 키를 설정할 때 삭제 및 업데이트 시 두 열에서 선택할 수 있는 값이 CASCADE, NO ACTION, RESTRICT, SET NULL 4가지가 있었습니다. 모두 직접 시도해 보았는데 차이점은 다음과 같습니다.

  • CASCADE: 상위 테이블이 삭제되고 업데이트되면 하위 테이블이 관련 레코드를 삭제하고 업데이트합니다.

  • SET NULL: 상위 테이블이 삭제될 때; 업데이트하면 하위 테이블은 관련 레코드를 삭제하고 업데이트합니다. 레코드의 외래 키 필드 열은 null로 설정되어 있으므로 하위 테이블을 설계할 때 외래 키를 null이 아닌 값으로 설정할 수 없습니다. RESTRICT(제한)는 상위 테이블 레코드 삭제를 방지합니다

  • NO ACTION: RESTRICT와 동일하지만 외래 키도 먼저 확인합니다.

Empty, RESTRICT , NO ACTIONDelete: 슬레이브 테이블의 레코드가 존재하지 않는 경우에만 메인 테이블을 삭제할 수 있으며, 슬레이브 테이블을 삭제하면 마스터 테이블은 변경되지 않습니다. 업데이트: 슬레이브 테이블 기록이 존재하지 않는 경우 메인 테이블 메뉴를 업데이트할 수 있습니다. 슬레이브 테이블이 업데이트되면 메인 테이블은 변경되지 않습니다. 삭제: 마스터 테이블 삭제 시 슬레이브 테이블을 자동으로 삭제합니다. 마스터 테이블은 그대로 두고 슬레이브 테이블을 삭제합니다. 업데이트: 마스터 테이블을 업데이트할 때 슬레이브 테이블을 자동으로 업데이트합니다. 마스터 테이블을 변경하지 않고 슬레이브 테이블을 업데이트합니다. Delete: 마스터 테이블 삭제 시 슬레이브 테이블을 NULL로 자동 업데이트합니다. 슬레이브 테이블을 삭제하면 마스터 테이블은 그대로 유지됩니다. 업데이트: 마스터 테이블을 업데이트할 때 슬레이브 테이블 값을 NULL로 자동 업데이트합니다. 마스터 테이블을 변경하지 않고 슬레이브 테이블을 업데이트합니다. 이해를 돕기 위해 간단한 예를 들어보겠습니다. (1) 데이터베이스 서점에서 다음과 같이 새 테이블 a를 생성했습니다.

CASCADE

SET NULL

외래 키 설정:

MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

(2) 데이터베이스 서점에서 다음과 같이 새 테이블 b를 만들었습니다.

MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

(3) 다음과 같이 테이블 a와 b에 레코드를 삽입합니다.

MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?

여기: 테이블 a의 id2 필드는 외국입니다. 키 필드는 테이블 b의 기본 키를 참조하므로 테이블 b는 상위 테이블이고 테이블 a는 하위 테이블입니다. 그런 다음 테이블 a의 외래 키를 설정할 때 네 가지 다른 값을 설정하면 위에서 언급한 결론을 도출할 수 있습니다. .

위 내용은 MySQL 외래 키 설정에서 CASCADE, NO ACTION, RESTRICT 및 SET NULL은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제