PRIMARY KEY
La clé primaire identifie chaque ligne de façon unique et stable : jamais deux fois la même valeur, jamais NULL. C'est elle que référencent les clés étrangères des autres tables.
- clé primaire
- identifiant
- unique
- clé composite
- rowid
Syntaxe
id INTEGER PRIMARY KEY -- numérotée automatiquementPRIMARY KEY (col1, col2) -- clé compositeExemple
CREATE TABLE project_grades ( student_id INTEGER NOT NULL REFERENCES students(id), project TEXT NOT NULL, grade REAL, PRIMARY KEY (student_id, project));INSERT INTO project_grades VALUES (1, 'Exposé', 15.5), (1, 'Maquette', 17);INSERT INTO project_grades VALUES (1, 'Exposé', 12);-- Jeu de données : école-- Une note par élève et par projet. La seconde insertion est refusée.-- Résultat attendu : erreur « UNIQUE constraint failed: project_grades.student_id, project_grades.project »À retenir
- Une table n'a qu'une clé primaire, mais celle-ci peut porter sur plusieurs colonnes (clé composite), typique des tables d'association.
- Dans SQLite, id INTEGER PRIMARY KEY suffit pour une numérotation automatique, car la colonne devient un alias du rowid.
- Piège : AUTOINCREMENT n'apporte pas la numérotation, déjà fournie. Il garantit seulement qu'un identifiant supprimé ne sera jamais réattribué, au prix d'une table interne supplémentaire. La documentation de SQLite le déconseille sauf besoin précis.
- Piège : pour des raisons historiques, SQLite accepte NULL dans une clé primaire qui n'est pas INTEGER PRIMARY KEY. Ajoutez NOT NULL à chaque colonne d'une clé composite ou textuelle.
Voir aussi
- FOREIGN KEYUne clé étrangère garantit qu'une valeur pointe vers une ligne qui existe dans une autre table, comme l'élève d'une absence. Elle empêche les références orphelines et encadre les suppressions.
- CREATE TABLECREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.
- UNIQUE, NOT NULL, CHECKCes contraintes refusent les données invalides dès l'écriture : NOT NULL impose une valeur, UNIQUE interdit les doublons, CHECK valide une règle métier comme une remise comprise entre 1 et 50 %.
- CREATE INDEXUn index est une structure triée, comme l'index d'un livre, qui permet de trouver des lignes sans parcourir toute la table. Il accélère lectures et jointures mais ralentit un peu les écritures.