69 votes

Tronquer une table SQLite si elle existe?

Pour tronquer une table dans SQLite, je dois utiliser cette syntaxe:

 DELETE FROM someTable
 

Mais comment est-ce que je ne tronque la table que si elle existe?

Malheureusement, cela génère une erreur:

 DELETE FROM someTable IF EXISTS
 

Cela ne marche pas non plus:

 DELETE IF EXISTS FROM someTable
 

Merci.

73voto

Blackberry Points 1042

C'est le processus en deux étapes:

  1. Supprimer toutes les données de cette table en utilisant:

     Delete from TableName
     
  2. Ensuite:

     DELETE FROM SQLITE_SEQUENCE WHERE name='TableName';
     

48voto

barti_ddu Points 5423

IMHO, il est plus efficace de supprimer la table et de la recréer. Et oui, vous pouvez utiliser "SI EXISTE" dans ce cas.

46voto

Code Chops Points 577

Il suffit de ne delete. C'est à partir de l'SQLite documentation:

Le Tronquer L'Optimisation

"Lorsque le OÙ est omis dans une instruction de SUPPRESSION et la table d'être supprimé n'a pas de déclencheurs, SQLite utilise une optimisation pour effacer la totalité du contenu de la table sans avoir à visiter chaque ligne de la table individuellement. Cette "tronquer" optimisation du fait de la suppression de courir beaucoup plus vite. Avant SQLite version 3.6.5, la tronquer l'optimisation signifiait aussi que la sqlite3_changes() et sqlite3_total_changes() des interfaces et de la count_changes pragma ne sera pas réellement de retourner le nombre de lignes supprimées. Ce problème a été corrigé à partir de la version 3.6.5."

8voto

Sandip Armal Patil Points 2058

Je l'ai eu pour travailler avec:

 SQLiteDatabase db= this.getWritableDatabase();
        db.delete(TABLE_NAME, null, null);
 

7voto

 SELECT name FROM sqlite_master where name = '<TABLE_NAME_HERE>'
 

Si le nom de la table n'existe pas, aucun enregistrement ne sera renvoyé!

Vous pouvez aussi bien utiliser

 SELECT count(name) FROM sqlite_master where name = '<TABLE_NAME_HERE>' 
 

si le compte est 1, la table signifie qu'il existe, sinon il renverrait 0

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