Tim Streater wrote:
> 
> I have a PHP script that I run in Terminal under OS X, which opens an
> sqlite db and works on it. Trouble is, if the db doesn't exist then
> the PHP library silently creates an empty db with the given name.
> Given this, I need to detect that the empty db has been created,
> delete it, and exit.
> 
> As a work around I thought I might check that the newly opened db has
> no tables, and clean up if so. My question is, what query can I make
> of the db to determine that it has no tables? I couldn't find one (or
> perhaps I don't know SQL well enough). If I run sqlite3 I can give it
> the .tables command - I suppose I could have a call to this module
> from my script, but I'd prefer to avoid that. Alternatively is then
> another approach?
> 

Another way to handle this situation is to use the user version (see 
http://www.sqlite.org/pragma.html#version) in SQLite to check if the 
database has been initialized. On an empty database the user version is 
zero.

   pragam user_version;
   0

After you have initialized the database you can change the user version 
to some other value, say 1. To ensure the database is completely 
initialized this should be done in a transaction.

   begin;
   -- initialize tables etc
   pragma user_version = 1;
   commit;

Now you can check if the database has been initialized or not, by 
checking the user_version. If you really want to delete empty database 
files, you can simply delete those with user version of zero, but it may 
be just as effective to simply initialize those files.

HTH
Dennis Cote

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to