Когда использовать «ОБНОВЛЕНИЕ КАСКАДА»

Я использую "НА УДАЛЕННОМ КАСКАДЕ " регулярно но я никогда не пользуюсьОБ ОБНОВЛЕНИИ КАСКАДА " поскольку я не очень уверен, в какой ситуации это будет полезно.

Ради обсуждения, давайте посмотрим код.

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 быть чем-то несуществующим, будет ли оно автоматически удалено?

Ну, я знаю, некоторые из приведенных выше вопросов можно протестировать программно, чтобы понять, но я также хочу знать, зависит ли что-либо из этого от поставщика базы данных или нет.

Пожалуйста, пролите немного света.

Ответы на вопрос(6)

Ваш ответ на вопрос