Wenn der Isolation-Level 2 bzw. 20 (repeatable) angegeben ist, werden für alle durch eine SQL-Anweisung zur Datenanfrage angesprochenen Tabellen vor Beginn der Bearbeitung Lesesperren angefordert.
Wenn durch eine SQL-Anweisung eine Ergebnistabelle erzeugt wird, die nicht physisch abgespeichert wird, werden diese Sperren erst am Transaktionsende oder beim Schließen der Ergebnistabelle freigegeben, andernfalls erfolgt die Freigabe dieser Sperren unmittelbar nach der Bearbeitung der SQL-Anweisung. Diese Tabellen-Lesesperre wird der Transaktion nicht zugeordnet bei SQL-Anweisungen, bei denen genau eine Zeile einer Tabelle bearbeitet wird, die durch Schlüsselspezifikationen oder durch CURRENT OF <result_table_name> bestimmt wird.
Darüber hinaus gilt, dass der Transaktion für jede während der Bearbeitung einer SQL-Anweisung gelesene Zeile implizit eine Lesesperre zugeordnet wird. Diese Sperren können nur durch die UNLOCK-Anweisung oder durch Beendigung der Transaktion freigegeben werden.
Beim Einfügen, Ändern und Löschen von Zeilen werden der Transaktion implizit Schreibsperren für die betroffenen Zeilen zugeordnet, die erst am Transaktionsende freigegeben werden. Es werden jedoch keine Sperren für die gesamte Tabelle gesetzt.