PaliSkill
SQL Intermédiaire

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 NULL pré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 NULL ne peut pas faire partie d'une clé primaire (qui interdit NULL) : il faut alors un identifiant séparé pour la table.
  • Le choix entre CASCADE et SET NULL dé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