on 2010 Oct 13 1:18 PM
Hi,
I am trying to use intent locks within a transaction over multiple sessions. The documentation seems to say that one intent lock does allow other sessions to read the record but not to create another intent lock. However when I try that, all intent locks seem to be successful.
In session1 (within a transaction) I create an intent lock by either:
select id, c from tab holdlock where id = 1
or
select id, c from tab where id = 1 for update by lock
This does create a lock, updating the record does block, but when I issue the same select statements in session2 (also in a transaction) to get (or wait for) an intent lock, the lock also seems to be created for session2, the select returns immediately, i would expect the second select to block until the first session transaction is ended.
I am using sybase ianywhere 11
Any idea what I am doing wrong or how to get a blocking state for the second session?
Rob Gansevles
HOLDLOCK does not acquire an intent row lock - the WITH( UPDLOCK ) table hint does. HOLDLOCK is equivalent to running the SELECT statement at isolation level 3.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
68 | |
10 | |
10 | |
10 | |
10 | |
8 | |
8 | |
7 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.