On 2015-04-08 06:00 PM, Dan Kennedy wrote:
> On 04/08/2015 10:52 PM, R.Smith wrote:
>>
>>
>> On 2015-04-08 05:38 PM, Dan Kennedy wrote:
>>> On 04/08/2015 09:51 PM, R.Smith wrote:
>>>>
>>>>
>>>> On 2015-04-08 04:18 PM, Fabian Pr?bstl wrote:
>>>>> Hi there!
>>>>>
>>>>> Currently, we are using SQLite as our application file format for 
>>>>> a Windows 7/C#/System.Data.SQLite based desktop application. We 
>>>>> only allow one instance to open the file by running "set 
>>>>> locking_mode=EXCLUSIVE;BEGIN EXCLUSIVE;COMMIT" when connecting to 
>>>>> the database.
>>>>
>>>> BEGIN EXCLUSIVE - Locks the database from other SQLite3 database 
>>>> connections for the time being.
>>>> COMMIT; - Unlocks it again - so calling all this in one go is 
>>>> pointless.
>>>
>>> Almost always correct. But the "PRAGMA locking_mode=EXCLUSIVE" thing 
>>> changes the behaviour:
>>>
>>>   https://www.sqlite.org/pragma.html#pragma_locking_mode
>>
>> But you need an actual SELECT to get a shared lock and an actual 
>> write operation to lock it exclusively, just starting the transaction 
>> and ending it does nothing to that effect? Or is my understanding wrong?
>
> That's the usual case. But "BEGIN EXCLUSIVE" actually does take an 
> exclusive lock:
>
>   https://www.sqlite.org/lang_transaction.html

Goodness... Where was my mind?!  Thank you Dan and apologies for the 
round trip, and for misleading the OP!
BEGIN EXCLUSIVE will of course instill the lock immediately.



Reply via email to