"ON DELETE CASCADE"를 정기적으로 사용하지만 어떤 상황에서 유용 할 지 확신 할 수 없으므로 "ON UPDATE CASCADE"를 사용하지 않습니다.
논의를 위해 코드를 보자.
CREATE TABLE parent (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE child (
id INT NOT NULL AUTO_INCREMENT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
);
"ON DELETE CASCADE"의 경우 부모가있는 부모를 id
삭제하면 자식이있는 레코드 parent_id = parent.id
가 자동으로 삭제됩니다. 문제 없습니다.
이것은 "ON UPDATE CASCADE"가
id
부모가 업데이트 될 때 동일한 작업을 수행한다는 것을 의미 합니까?(1)이 true 인 경우 "ON UPDATE CASCADE"를
parent.id
업데이트 할 수없는 경우 (AUTO_INCREMENT
또는 항상로 설정 한 경우) 업데이트 할 수없는 경우 "ON UPDATE CASCADE"를 사용할 필요가 없음을 의미 합니다TIMESTAMP
. 맞습니까?(2)가 맞지 않으면, 어떤 다른 상황에서 "ON UPDATE CASCADE"를 사용해야합니까?
child.parent_id
존재하지 않는 것으로 업데이트 (어떤 이유로) 하면 자동으로 삭제됩니까?
글쎄, 위의 질문 중 일부는 프로그래밍 방식으로 이해하기 위해 테스트 할 수 있지만 데이터베이스 공급 업체에 의존하는지 여부를 알고 싶습니다.
약간의 빛을 비추십시오.