source

MySQL의 '삭제 제한 시' 절의 정확한 의미

nicesource 2023. 1. 28. 09:30
반응형

MySQL의 '삭제 제한 시' 절의 정확한 의미

MySQL 테이블이 2개 있습니다.collections그리고.privacy_level.
외부 키 관계를 사용하여 다음과 같이 정의합니다.

CREATE TABLE collections (
  coll_id smallint NOT NULL AUTO_INCREMENT UNSIGNED,
  name varchar(30) NOT NULL,
  privacy tinyint NOT NULL UNSIGNED DEFAULT '0',
  PRIMARY KEY(coll_id),
  INDEX(privacy),
  FOREIGN KEY fk_priv (privacy) REFERENCES privacy_level (level) ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;  

 CREATE TABLE privacy_level (
   level tinyint NOT NULL UNSIGNED,
   name varchar(20) NOT NULL,
   PRIMARY KEY (level)
 ) ENGINE InnoDB;  

제가 궁금한 건ON DELETE RESTRICT온라인 매뉴얼이나 구글 검색에서는 답을 찾을 수 없었습니다.

즉, 행은 삭제할 수 없습니다.privacy_level?
또는 행은 삭제할 수 없다는 뜻입니까?privacy_level 에서 소동이 일어나면collections.privacy에 있는 값과 같은 값이 있습니다.privacy_level.level?

즉, 만약privacy_level가지다level = 2,name = 'top secret'소장품에는 기재되어 있지 않습니다.프라이버시에는privacy = 2, 를 삭제할 수 있습니까?level = 2,name = 'top secret'아니면 기둥 전체에 걸쳐 출입이 금지되어 있나요?

통찰해 주셔서 감사합니다.

ON DELETE RESTRICT부모 행의 값을 참조하는 자녀 행이 존재하는 경우 해당 부모 행을 삭제할 수 없습니다.부모 행에 참조하는 자녀 행이 없는 경우 해당 부모 행을 삭제할 수 있습니다.

ON DELETE RESTRICT는, 외부 키의 디폴트 동작이기 때문에, 거의 불필요한 구문입니다.

또,ON DELETE CASCADE즉, 부모를 삭제하면 모든 자녀는 자동으로 삭제됩니다.이것은 파라미터 또는 설정을 포함한 테이블이 다른 테이블과 관련되어 있는 경우에 편리합니다.

언급URL : https://stackoverflow.com/questions/8072876/exact-meaning-of-mysqls-foreign-key-on-delete-restrict-clause

반응형