views:

308

answers:

1

I want to drop all tables that does not have rows.

How to drop all empty tables in SQLite?

EDIT
I need to do this on a mobile phone (no shell there). On a Windows Mobile phone.

+4  A: 

Tables can be dropped, whether or not they have data in them when the command is executed. Dunno of any database that operates otherwise. So that means:

1) Getting a list of tables -

SELECT name 
  FROM sqlite_master
 WHERE type = 'table'

2) Iterate over that list, using COUNT(*) to determine if any rows exist within a table:

SELECT COUNT(*) 
  FROM ~table

3) If the number returned is less than 1, execute a DROP statement:

DROP TABLE ~table

SQLite doesn't have function or stored procedure support - you'll have to do this from your application.

OMG Ponies
what's that ~ before table name stands for?
Pentium10
OMG Ponies
@Pentium10: It's a trap!
Hogan