Aller au contenu
Structure (DDL)

ALTER TABLE

ALTER TABLE fait évoluer une table existante sans perdre ses données : ajouter, renommer ou supprimer une colonne, renommer la table. C'est l'outil des migrations de schéma.

  • modifier structure
  • ajouter colonne
  • renommer
  • supprimer colonne
  • DDL

Syntaxe

Modèle
ALTER TABLE table ADD COLUMN colonne TYPE;ALTER TABLE table RENAME COLUMN ancien TO nouveau;ALTER TABLE table DROP COLUMN colonne;ALTER TABLE table RENAME TO nouveau_nom;

Exemple

Exemple concret
ALTER TABLE students ADD COLUMN email TEXT;ALTER TABLE students RENAME COLUMN email TO contact_email;ALTER TABLE students DROP COLUMN contact_email;SELECT name AS colonneFROM pragma_table_info('students');-- Jeu de données : école-- La colonne a été ajoutée, renommée puis supprimée : on retrouve la structure d'origine.-- Résultat attendu :-- id-- name-- age-- class_id

À retenir

  1. SQLite gère ADD COLUMN, RENAME TO, RENAME COLUMN (depuis la 3.25, 2018) et DROP COLUMN (depuis la 3.35, 2021). Le playground, en SQLite 3.49, accepte les quatre.
  2. ADD COLUMN a des limites : pas de PRIMARY KEY ni de UNIQUE, et une colonne NOT NULL doit recevoir une valeur DEFAULT non nulle pour remplir les lignes existantes.
  3. Piège : DROP COLUMN échoue si la colonne fait partie de la clé primaire, d'une contrainte UNIQUE, d'un index, d'une clé étrangère ou d'une vue. Supprimez d'abord l'objet qui en dépend.
  4. Piège : SQLite n'a pas d'ALTER COLUMN. Pour changer un type ou ajouter une contrainte, on crée une nouvelle table, on copie les données (INSERT INTO … SELECT), on supprime l'ancienne puis on renomme la nouvelle, le tout dans une transaction. PostgreSQL propose ALTER COLUMN … TYPE.

Voir aussi