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
.
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.
Vous pouvez utiliser:
DROP TABLE IF EXISTS TABLE_NAME;
Utilisez-le.
DROP TABLE TABLE_NAME;
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"