Quel est le comportement par défaut de DELETE sur MySQL?

J’essaie d’parsingr les documents MySQL. Ils pourraient être plus clairs. Ce qu’ils semblent dire, c’est qu’il y a cinq possibilités: SET NULL, NO ACTION, RESTRICT, CASCADE et SET DEFAULT.

NO ACTION et RESTRICT font la même chose (empêchent tout changement de firebase database qui casse un FK) et cette chose est la valeur par défaut. Si vous omettez une clause ON DELETE, vous dites NO ACTION (ou RESTRICT – même chose).

SET NULL permet la suppression d’une ligne parente, définit le FK sur NULL.

CASCADE supprime la ligne enfant.

SET DEFAULT ne devrait jamais être utilisé.

Est-ce plus ou moins correct?

Oui c’est correct:

NO ACTION : InnoDB refuse l’opération de suppression ou de mise à jour pour la table parente.

RESTRICT : rejette l’opération de suppression ou de mise à jour pour la table parente. Spécifier RESTRICT (ou NO ACTION) est la même chose que d’omettre la clause ON DELETE ou ON UPDATE. […]

Apparemment, NO ACTION et RESTRICT sont synonymes. De plus, comme ils sont utilisés chaque fois qu’il n’y a pas de clause ON DELETE / UPDATE , c’est le comportement par défaut.

SET NULL : Supprimez ou mettez à jour la ligne de la table parent et définissez la ou les colonnes de la clé étrangère dans la table enfant sur NULL. […]

La colonne étrangère est définie sur NULL, à condition qu’elle ne soit pas déclarée comme NOT NULL (ou que InnoDB n’autorise pas la suppression ou la mise à jour).

CASCADE : Supprimez ou mettez à jour la ligne de la table parente et supprimez ou mettez à jour automatiquement les lignes correspondantes dans la table enfant. […]

Cascade supprime (ou met à jour) la colonne étrangère.

SET DEFAULT : Cette action est reconnue par l’parsingur, mais InnoDB rejette les définitions de table contenant les clauses ON DELETE SET DEFAULT ou ON UPDATE SET DEFAULT.

Donc, fondamentalement, vous ne pouvez pas utiliser cette option.