MYSQL 외래키(Foreign key) 지정 시 

on delete rule(삭제 시), on update rule(변경 시) 옵션 지정


RESTRICT, CASCADE, NO ACTION, SET NULL


1. RESTRICT : 개체를 변경/삭제할 때 다른 개체가 변경/삭제할 개체를 참조하고 있을 경우 변경/삭제가 취소됩니다.(제한)


2. CASCADE : 개체를 변경/삭제할 때 다른 개체가 변경/삭제할 개체를 참조하고 있을 경우 함께 변경/삭제됩니다.


3. NO ACTION : 개체를 변경/삭제할 때 다른 개체가 변경/삭제할 개체를 참조하고 있을 경우 변경/삭제할 개체만 변경/삭제되고 참조하고 있는 개체는 변동이 없습니다.


4. SET NULL : 개체를 변경/삭제할 때 다른 개체가 변경/삭제할 개체를 참조하고 있을 경우 참조하고 있는 값은 NULL로 세팅됩니다.

Posted by 준콩ol 준콩ol

댓글을 달아 주세요

  1. makayal46 2019.01.29 11:11  댓글주소  수정/삭제  댓글쓰기

    MySQL 에서 NO ACTION 은 RESTRICT 와 동일합니다. 참조되는 Parent 를 지우지 못하게 합니다. ANSI 에서 차이는 지우고 정합성을 맞춰보는가 혹은 정합성부터 확인을 하는것인가가 다르지만, MySQL은 deferred 를 지원하지 않음으로 정합성부터 체크합니다. 그래서 동일하게 됩니다.

  2. nailGhost 2020.07.23 20:51 신고  댓글주소  수정/삭제  댓글쓰기

    맞습니다. 무결성이 깨지기 때문에 말이 안되는 명령이라 생각합니다. 내용 정정 부탁드립니다.
    _ _)