web-dev-qa-db-fra.com

Supprimer la table existante dans SQLite, lorsque l'opérateur IF EXISTS n'est pas pris en charge

Ma version de SQLite ne prend pas en charge le IF EXISTS opérateur. Comment puis-je supprimer une table qui peut ou peut ne pas exister sans que je reçoive une erreur?

Je ne peux pas mettre à jour la version sur une application en direct pour le moment, donc je ne peux pas utiliser une version SQLite qui prend en charge IF EXISTS.

38
HyderA

Le documentation officielle dit d'utiliser IF EXISTS, donc je pense que votre meilleur plan est de mettre à jour.

Si vous ne le pouvez pas, vous devez voir si vous pouvez effectuer une opération triviale sur la table qui réussira, que la table soit vide ou non; s'il réussit, vous devez supprimer la table, s'il échoue, la table est déjà partie. Un exemple du type d'opération à essayer pourrait être:

SELECT COUNT(*) FROM theTable;

Notez que vous devez intercepter l'erreur possible au niveau de la langue et que vous souhaitiez peut-être envelopper le lot entier (sonde, erreur-piège, drop table) dans une transaction. Bien sûr, l'autre approche si vous vous lancez dans la gestion des erreurs consiste simplement à supprimer la table et à gérer l'erreur de toute façon.

22
Donal Fellows

Vous pouvez utiliser:

DROP TABLE IF EXISTS TABLE_NAME;
113
Amit Jatrana

Utilisez-le.

DROP TABLE TABLE_NAME;
5
Ahmad affandi

Vous pouvez en quelque sorte utiliser la table de métadonnées dans votre requête pour savoir si la table existe:

SELECT count(*) > 0 FROM sqlite_master where tbl_name = "<table_name>" and type="table"
3
Marcus