The locking concept which ensures data consistency is implemented in CALL DML applications in the following way: if a retrieval statement accesses the user data in a CALL DML table, SESAM/SQL DBH locks the relevant record against access by other transactions until the executing transaction is either terminated or rolled back. Depending on the Open mode a shared or exclusive lock is set. In addition, SESAM/SQL permits the following modifications of the locking concept for individual CALL DML statements:
reading without a lock (Read No Lock)
ignoring the lock (Read No Wait)
reading without a lock and ignoring the lock
When a CALL DML transaction is converted it is advisable to change the locking behavior as little as possible. If a shared or exclusive lock is set for a CALL DML transaction, you should use the SQL statement SET TRANSACTION to set the isolation level REPEATABLE READ prior to the transaction.
If the locking behavior for individual CALL DML applications has been changed, it is advisable to use the pragma ISOLATION LEVEL. You can use this to define a specific isolation level for the corresponding SQL statement which is equivalent to the locking behavior of the associated CALL DML statement:
replace “Read No Lock“ with READ COMMITED
replace “Read No Lock and Read No Wait“ with READ UNCOMMITED
Only in the case of “Read No Lock“ SESAM/SQL ignorant of the corresponding isolation level. Here, you should decide on a case-by-case basis whether the isolation level READ COMMITED or READ UNCOMMITED is more suitable.