Когда использовать «ОБНОВЛЕНИЕ КАСКАДА»
Я использую "НА УДАЛЕННОМ КАСКАДЕ " регулярно но я никогда не пользуюсьОБ ОБНОВЛЕНИИ КАСКАДА " поскольку я не очень уверен, в какой ситуации это будет полезно.
Ради обсуждения, давайте посмотрим код.
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
);
За "НА УДАЛЕННОМ КАСКАДЕ ", если родитель сid
удалена, запись у ребенка сparent_id = parent.id
будет автоматически удален. Это должно быть без проблем.
Это означает, что "ОБ ОБНОВЛЕНИИ КАСКАДА " будет делать то же самое, когдаid
родителя обновляется?
Если (1) верно, это означает, что нет необходимости использовать "ОБ ОБНОВЛЕНИИ КАСКАДА " еслиparent.id
не обновляется (или никогда не будет обновляться), например, когдаAUTO_INCREMENT
или всегда установлен бытьTIMESTAMP
, Это правильно?
Если (2) не соответствует действительности, в какой другой ситуации мы должны использовать "ОБ ОБНОВЛЕНИИ КАСКАДА "?
Что если я (по какой-то причине) обновлюchild.parent_id
быть чем-то несуществующим, будет ли оно автоматически удалено?
Ну, я знаю, некоторые из приведенных выше вопросов можно протестировать программно, чтобы понять, но я также хочу знать, зависит ли что-либо из этого от поставщика базы данных или нет.
Пожалуйста, пролите немного света.