Das Sperrkonzept, das die Konsistenz der bearbeiteten Daten gewährleistet, wird bei CALL-DML-Anwendungen folgendermaßen realisiert: Greift eine Wiedergewinnungsanweisung auf die Anwenderdaten einer CALL-DML-Tabelle zu, sperrt der SESAM/SQL-DBH den jeweiligen Satz solange gegen den Zugriff anderer Transaktionen, bis die ausführende Transaktion beendet oder zurückgesetzt ist. Abhängig vom Open-Modus wird eine shared bzw. exclusive Sperre gesetzt. Daneben erlaubt SESAM/SQL für einzelne CALL-DML-Anweisungen folgende Modifikationen des Sperrkonzepts:
Lesen ohne zu sperren (Read No Lock)
Ignorieren der Sperre (Read No Wait)
Lesen ohne zu sperren und Ignorieren der Sperre
Bei der Umstellung einer CALL-DML-Transaktion ist es ratsam, das Sperrverhalten möglichst nicht zu verändern. Liegt für die CALL-DML-Transaktion eine shared oder exclusive Sperre vor, sollten Sie vor Beginn der Transaktion mit der SQL-Anweisung SET TRANSACTION den Isolationslevel REPEATABLE READ einstellen.
Wurde für einzelne CALL-DML-Anweisungen das Sperrverhalten modifiziert, empfiehlt es sich, das Pragma ISOLATION LEVEL zu verwenden. Damit können Sie für die korrespondierende SQL-Anweisung gezielt einen Isolationslevel festlegen, der dem Sperrverhalten der jeweiligen CALL-DML-Anweisung entspricht:
„Lesen ohne zu sperren“ ersetzen Sie durch READ COMMITED
„Lesen ohne zu sperren und Ignorieren der Sperre“ ersetzen Sie durch READ UNCOMMITED
Nur für das Sperrverhalten „Ignorieren der Sperre“ kennt SESAM/SQL keinen entsprechenden Isolationslevel. Hier ist fallweise abzuwägen, ob der Isolationslevel READ COMMITED oder READ UNCOMMITED geeigneter ist.