Cecil,

>Do I understand it correctly that after a commit the database is writeable
>again for others?

Yes.

>  In that case it is maybe better to do a:
>     *PRAGMA locking_mode = EXCLUSIVE;
>*followed by an update of the database. As long as the application is
>running, I want to be sure that nobody writes to the database.*
>*

If you _need_ exclusiveaccess all along, then start app, "begin 
exclusive", do your stuf, "commit" and exit.

>I am now using:
>             stat.execute("" +
>                     "PRAGMA locking_mode = EXCLUSIVE;\n" +
>                     "UPDATE authors\n" +
>                     "SET    name = name\n" +
>                     "WHERE  id = (\n" +
>                     "    SELECT MIN(id)\n"+
>                     "    FROM   authors\n" +
>                     ");" +
>                     "COMMIT;");

A commit without begin * is useless and should result in an error being 
returned.

But in the example above, there is asolutely no need for an explicit 
transaction, nor any exclusive mode.  Your UPDATE is an atomic 
auto-commit operation in itself.

>The COMMIT is to be sure that this will not unlock the database.

Erroneous.

What I don't get is you later say it's a single-user, single-app 
use.  You don't have to take that much care in this case.  Anyway, 
enclosing R-M-W operations in an immediate (or exclusive) transaction 
is always a good idea, should you have to introduce companion apps 
later, or use a third-party DB manager in parallel.


--
<mailto:j...@q-e-d.org>j...@antichoc.net  

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

Reply via email to