Thank you Simon for a very full and informative reply. Howard Date: Sat, 1 Dec 2012 19:37:45 -0800 From: ml-node+s1065341n65817...@n5.nabble.com To: docshotma...@hotmail.com Subject: Re: How to restore from backup or alter db in multi-user envionment?
On 1 Dec 2012, at 3:22pm, dochsm <[hidden email]> wrote: > My database is shared by many users on a network. As part of auto-updating my > client applications via the web it might be necessary to alter some table > structures / view sql or put extra data into tables inside the shared sqlite > database. Problem is that the db might be in use at the time. > > Qn1) Is it safe simply to wrap up everthing I want to do in a transaction > and then commit the transaction? As far as SQLite is concerned, yes. SQLite will lock the schema against changes while SELECT UPDATE INSERT commands are executing, and will lock the database against those commands while the database schema is being changed. The effect is that locking is used in the same way it would be if two users tried to do UPDATE commands at the same time. > Q2) If I back up the database first using the online backup to safely back > it up, how do I safely restore it again when the db might be in use at the > time? I assume you're talking about the online backup API: <http://www.sqlite.org/c3ref/backup_finish.html> Under those circumstances I think you would use the same backup API in the other direction to restore the database again. It will have a lock on that destination database the whole time it's working, of course. So if you have implemented a timeout correctly your users will just get a long pause or a "database busy" message during access. If you have been writing your code correctly you will have used transactions to group all related accesses /including related SELECTs/ together. So any particular piece of code in your app should notice only consistency. > I'm using DISQLite and the online api in delphi, not the command line thing. I have seen some bad drivers which assume that underlying schema will not be changed by another user while they have a database connection open. I have no reason to believe that this is one of them, but it might be worth reading the documentation. Simon. _______________________________________________ sqlite-users mailing list [hidden email] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users If you reply to this email, your message will be added to the discussion below: http://sqlite.1065341.n5.nabble.com/How-to-restore-from-backup-or-alter-db-in-multi-user-envionment-tp65812p65817.html To unsubscribe from How to restore from backup or alter db in multi-user envionment?, click here. NAML -- View this message in context: http://sqlite.1065341.n5.nabble.com/How-to-restore-from-backup-or-alter-db-in-multi-user-envionment-tp65812p65818.html Sent from the SQLite mailing list archive at Nabble.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users