Leçon 6 / 10 — Chapitre 6: Modifier les données avec rigueur
ON DELETE SET NULL
ON DELETE SET NULL est une alternative à CASCADE : au lieu de supprimer les lignes qui référencent la ligne supprimée, elle met leur colonne de clé étrangère à NULL, en gardant la ligne elle-même.
CREATE TABLE inscriptions (
id SERIAL PRIMARY KEY,
abonne_id INTEGER REFERENCES abonnes(id) ON DELETE SET NULL,
formule TEXT
);
Ici, abonne_id n'est plus utilisée comme clé primaire (une clé primaire ne peut jamais être NULL, ce qui empêcherait justement SET NULL de fonctionner) : une colonne id dédiée assure l'unicité de chaque ligne à sa place.
Si un abonné est supprimé, ses lignes dans inscriptions ne disparaissent pas : elles restent, mais avec abonne_id à NULL — l'inscription est conservée comme trace, « orpheline » de son abonné d'origine.
À retenir :
ON DELETE SET NULLpréserve la ligne qui référence la ligne supprimée, en mettant seulement sa clé étrangère àNULL.- Une colonne utilisée avec
SET NULLne peut pas faire partie d'une clé primaire (qui interditNULL) : il faut alors un identifiant séparé pour la table. - Le choix entre
CASCADEetSET NULLdépend du besoin métier : supprimer l'historique avec l'entité (CASCADE), ou le conserver sans son lien d'origine (SET NULL).
À vous de jouer : dans quel cas préféreriez-vous SET NULL à CASCADE pour la table inscriptions ? Justifiez.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès