Hi!
Here is controller's logic:
1. Get field value:                     
  fld_v= db.table[i].any_field

2. Evaluate new value depending on existing one:               
   new_fld_v=fun(fld_v)

3. Update record with new value: 
   db(db.table.id==i).update(any_field=new_fld_v)

The problem:
After first step (i.e. after SELECT)  just a SHARED lock is acquired (see 
SQLite docs).  Thus, any other request can call the same controller and get 
the same field's value and etc.
How can I allow sequential calls only to prevent any other's SELECT until 
UPDATE? I know about BEGIN DEFERRED/IMMEDIATE/EXCLUSIVE, also
I know web2py enclose all request/controller's calls in something like 
BEGIN/COMMIT, but  SQLite doesn't support nested BEGIN/COMMIT (except 
SAVEPOINT).
What is default isolation_level/locking_mode is realized during web2py 
request process?
Is there safe solution or I worry for nothing?


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to