On 13 Apr 2017, at 2:39pm, Olivier Mascia <[email protected]> wrote:
> Known, but thanks. :)
> The question was why SAVEPOINT, when there is no outer transaction, is
> limited to the behavior of simple BEGIN (which is BEGIN DEFERRED) and does
> not offer provision for IMMEDIATE or EXCLUSIVE mode (I'm only interested in
> IMMEDIATE for the use-case I have in mind)?
Just as with any other SQL command which accesses data, you’re not meant to
start a transaction by declaring a savepoint. SAVEPOINT should not be
acquiring locks. You should have already done a BEGIN to acquire the locks you
want.
SQLite expects you to do
BEGIN <whatever>
<commands go here>
SAVEPOINT <name>
<commands go here>
RELEASE SAVEPOINT <name>
<commands go here>
COMMIT
Just as with any other SQL command, if you forget to do your BEGIN, SQLite
wraps your command in BEGIN DEFERRED […] END , but that’s a convenience, not
something . If you prefer your lock to be EXCLUSIVE or IMMEDIATE you can
specify it in the BEGIN command.
Simon.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users