Anfang des Inhaltsbereichs

LOCK-Anweisung (lock_statement) Dokument im Navigationsbaum lokalisieren

Die LOCK-Anweisung (lock_statement) ordnet der aktuellen Transaktion eine Sperre zu.

Syntax

<lock_statement> ::=
LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN SHARE MODE
LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN EXCLUSIVE MODE
LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN SHARE MODE <lock_spec> IN EXCLUSIVE MODE
LOCK [(WAIT)|(NOWAIT)] <row_spec>... OPTIMISTIC

<lock_spec> ::= TABLE <table_name>,... | <row_spec>...
| TABLE <table_name>,... <row_spec>...

row_spec, table_name

Erläuterung

Die angegebene Tabelle darf keine temporäre Basistabelle, keine View-Tabelle (siehe Tabelle) und kein Synonym sein. Wenn der Tabellenname eine View-Tabelle identifiziert, werden Sperren auf die Basistabellen gesetzt, die der View-Tabelle zugrundeliegen.

WAIT/NOWAIT

<row_spec>...

Bei Angabe von <row_spec>... wird eine Sperre für die durch die Schlüsselwerte oder durch einen Standpunkt in einer Ergebnistabelle bezeichnete Zeile einer Tabelle angelegt.

Die Angabe einer row_spec erfordert, daß die angegebene Tabelle eine Schlüsselspalte besitzt, d. h. falls durch den Tabellennamen eine View-Tabelle angegeben ist, muß diese änderbar sein.

TABLE <table_name>,...

Bei Angabe von TABLE <table_name>,... wird eine Sperre für die genannte Tabelle angelegt.

Wenn der Tabellenname eine nicht änderbare View-Tabelle identifiziert, ist nur das Setzen einer Lesesperre für diese View-Tabelle möglich. Als Folge dieser SQL-Anweisung sind anschließend für alle Basistabellen, die der View-Tabelle zugrundeliegen, Lesesperren gesetzt.

SHARE

SHARE definiert eine Lesesperre für die aufgeführten Objekte. Zum Setzen von Lesesperren muß der aktuelle Benutzer das SELECT-Privileg besitzen.

EXCLUSIVE

EXCLUSIVE definiert eine Schreibsperre für die aufgeführten Objekte. Zum Setzen von Schreibsperren muß der aktuelle Benutzer das UPDATE-, DELETE- oder INSERT-Privileg besitzen.

OPTIMISTIC

OPTIMISTIC definiert eine optimistische Sperre auf Zeilen. Diese ist nur in Zusammenhang mit den Isolation-Levels 0, 1, 10 und 15 sinnvoll.

Deadlock

Erkennt das Datenbanksystem einen durch Sperren verursachten Deadlock, so wird die Transaktion durch ein implizites ROLLBACK WORK beendet.

Reproduzierbarkeit

Werden für das Lesen von Zeilen mittels einer SELECT-Anweisung reproduzierbare Ergebnisse gewünscht, müssen die gelesenen Objekte gesperrt werden, und die Sperren müssen bis zur Reproduktion gehalten werden. Für die Reproduzierbarkeit ist es im allgemeinen erforderlich, die betroffenen Tabellen explizit mittels eines oder mehrerer LOCK-Anweisungen oder implizit durch Verwendung des Isolation-Level 3 lesend zu sperren. Dadurch wird gewährleistet, daß kein anderer Benutzer die Tabelle ändern kann.

Siehe auch:

Sperrverhalten

Ende des Inhaltsbereichs