2010-09-09 9 views

Respuesta

19

El official documentation dice que usar IF EXISTS, entonces sospecho que su mejor plan es actualizar.

Si no puede, necesita ver si puede hacer alguna operación trivial en la tabla que tendrá éxito si la tabla está vacía o no; si tiene éxito, debe eliminar la tabla; si falla, la tabla ya no está. Un ejemplo de la clase de operación para tratar podría ser:

SELECT COUNT(*) FROM theTable; 

cuenta que es necesario controlar la posible error de esta a nivel del lenguaje, y es posible que desee para envolver la totalidad del lote (sonda, el error de la trampa , drop table) en una transacción. Por supuesto, el otro enfoque si se está manejando el error es simplemente dejar caer la tabla y manejar el error de todos modos.

2

usted podría utilizar alguna manera la tabla de metadatos en su consulta para averiguar si la tabla existe:

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

Hmm ... ¿cómo usaría eso cuando deje caer la mesa? – HyderA

+0

no se puede escribir "if (SELECT count (*) FROM sqlite_master donde tbl_name =" "y type =" table ")> 0 drop table " No sé si esa es la sintaxis correcta para sqlite. – Marcus

97

que puede utilizar:

DROP TABLE IF EXISTS TABLE_NAME; 
5

sólo tiene que utilizar esto.

DROP TABLE TABLE_NAME; 
Cuestiones relacionadas