2 votes

Comment puis-je supprimer une table dans une base de données si une autre table existe?

Je suis en train d'essayer de supprimer une table dans une base de données si une autre table existe.

J'ai fait une sauvegarde d'une table en utilisant cette requête :

ALTER TABLE AppProfile RENAME TO AppProfile_backup

Maintenant, je voudrais restaurer la table de sauvegarde et supprimer AppProfile via quelque chose comme :

DROP TABLE AppProfile IF EXISTS TABLE AppProfile_backup
(ALTER TABLE AppProfile_backup RENAME TO AppProfile) IF NOT EXISTS AppProfile

Cependant, j'obtiens des erreurs de syntaxe pour les deux lignes, près du jeton "IF".

Pour plus d'informations sur ce problème, j'utilise la classe SQLiteOpenHelper dans Android. Vous pouvez exécuter du SQL brut dans cet environnement en faisant l'appel [instance_du_gestionnaire_db].getWritableDatabase().execSQL("requête aléatoire");

1voto

Trinimon Points 6254

Que diriez-vous de le faire en Java? Vous pouvez interroger le dictionnaire de données ...

String sql = "SELECT 1 "
           + "  FROM sqlite_master  " 
           + " WHERE type = 'table' "
           + "   AND name = 'AppProfile_backup'";

Cursor cursor = db.rawQuery(sql, null);

... et supprimez la table, si la table de sauvegarde existe:

if (cursor.moveToNext())
    db.execSQL("DROP TABLE AppProfile;");
else
    db.execSQL("ALTER TABLE ...");

0voto

legrandviking Points 1283

Vous devez vérifier l'existence de la table en la cherchant dans la définition de votre base de données, quelque chose comme ce qui suit devrait faire l'affaire

SI (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'LeSchema' 
                 AND  TABLE_NAME = 'LaTable'))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X