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

Reply via email to