Constraintes sur les tables

Il existe différents types de contraintes


Index

Lister

SHOW INDEX FROM nom_table [FROM database] [WHERE expr]

Ajouter

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX nom_index ON nom_table (attributs)

Supprimer

DROP INDEX nom_index

Clés étrangères

Pour créer une clé étrangère, il faut

CREATE TABLE commande_produits (
  id INT(11) PRIMARY KEY,
  id_commande INT(11),
  id_produit INT(11),
  FOREIGN KEY(id_commande) REFERENCES commande (id) ON UPDATE SET NULL ON DELETE CASCADE,
  FOREIGN KEY(id_produit) REFERENCES produit (id)
);
ALTER TABLE `category`
  ADD CONSTRAINT `parent` FOREIGN KEY (`parent`) REFERENCES `category`(`id`)
  ON DELETE CASCADE ON UPDATE RESTRICT; 

On delete, on update

On peut contrôler le comportement du n-upplet lorsque la valeur référencée est supprimée avec ON DELETE:

ON DELETE {RESTRICT | NO ACTION | SET NULL | CASCADE}

Ou lorsqu’elle est modifiée avec ON UPDATE:

ON UPDATE {RESTRICT | NO ACTION | SET NULL | CASCADE}
Valeur Description Exemple
NO ACTION (Comportement par défaut) Lever une erreur si l'on essaie de supprimer une référence
Synonyme: RESTRICT
Si l'on essaie de supprimer un groupe alors qu'un étudiant appartient à ce groupe, la suppression échoue en affichant une erreur (Cannot delete or update a parent row: a foreign key constraint fails [...])
SET NULL Mettre à NULL la valeur lorsqu'on supprime la référence Si l'on supprime une catégorie, on met NULL pour catégorie aux produits associés (= sans catégorie)
CASCADE Supprimer la ligne si la référence est supprimée Si l'on supprime un concert, on supprime toutes les réservations associées.