I am running a bunch of XA transactions on Db2.

Db2 seems to treat all connections from the same transaction as loosely coupled - in other words, if one connection works on a table, then it is locked from all other connections within the same transaction.

Tightly coupled transactions should all share locks to prevent this kind of locking, when it is all part of one transaction. The documentation seems to state that tightly coupling is the default, but that is not reflected in DB2's behaviour. Does anyone know what could be wrong?

In fact, even using the same XAConnection object, it will still be blocked if I try to do an update after an insert (without ending and comitting the entire transaction).