Pour supprimer une table dans SQLite, utilisez le DROP TABLE
déclaration.
L'exécution de cette instruction supprime la table de la base de données. Il est complètement supprimé du schéma de la base de données et du fichier disque. Par conséquent, la table ne peut pas être récupérée. Tous les index et déclencheurs associés à la table sont également supprimés.
Un DROP TABLE
de base Déclaration
Examinons d'abord les tables de notre base de données :
sqlite> .tables Albums Albums1 Albums2 Artists
Nous avons quelques tables de rechange de nos exercices précédents, alors laissons-en une.
Le code suivant supprime les Albums1 tableau :
DROP TABLE Albums1;
Après avoir exécuté ce code, nous pouvons revoir nos tables :
sqlite> .tables Albums Albums2 Artists
Le tableau a été supprimé.
Vérifier si le tableau existe
Vous pouvez utiliser le IF EXISTS
clause pour vérifier si la table existe avant que SQLite n'essaie de la supprimer.
Cela évite les erreurs qui seraient normalement générées si la table n'existe pas.
Essayons d'abord de supprimer une table inexistante sans en utilisant le IF EXISTS
clause. Essayons de supprimer celui que nous venons de supprimer :
DROP TABLE Album1;
Il en résulte ce qui suit :
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, alors réessayons, mais cette fois avec le IF EXISTS
clause :
DROP TABLE IF EXISTS Album1;
Résultat :
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Donc rien ne s'est passé. Surtout, aucune erreur n'a été générée.
Déposer une table avec des clés primaires
Que se passe-t-il si nous essayons de supprimer une table contenant des clés primaires et qu'il existe des clés étrangères qui y font référence ?
Essayons :
DROP TABLE Artists;
Résultat :
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Comme prévu, cela a échoué. Donc, si vous devez supprimer une table, vous devrez d'abord supprimer toutes les tables associées.
SQLite essaie en fait de supprimer les données avant de supprimer une table. C'est cette action de suppression qui provoque la vérification des contraintes de clé étrangère.
SQLite supprime également tous les index ou déclencheurs associés à la table avant d'effectuer l'opération de suppression (et de suppression ultérieure).