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
'source' 카테고리의 다른 글
덱스를 실행할 수 없음: 여러 덱스 파일에 의해 정의됩니다. (0) | 2023.01.28 |
---|---|
mod_php가 뭐죠? (0) | 2023.01.28 |
메서드 org.postgresql.jdbc.PgConnection.createClob()은 아직 구현되지 않았습니다. (0) | 2023.01.28 |
jQuery를 사용하여 HTML 요소를 만드는 가장 효율적인 방법은 무엇입니까? (0) | 2023.01.28 |
Mac OS X Lion에서 PHP.ini는 어디에 있습니까? (0) | 2023.01.28 |