Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (E-O)

 

LOCK TABLE-Anweisung

Mit dieser Anweisung verhindern Sie, dass andere gleichzeitige Transaktionen auf eine Tabelle zugreifen oder sie ändern.

Syntax
LOCK TABLE Tabellenname
[ WITH HOLD ]
IN { SHARE | EXCLUSIVE } MODE
Parameter
  • Tabellenname   Der Name der Tabelle. Die Tabelle muss eine Basistabelle und keine Ansicht sein. Da Daten in temporären Tabellen zur aktuellen Verbindung lokal sind, hat das Sperren von globalen oder lokalen temporären Tabellen keine Auswirkungen.

  • WITH HOLD-Klausel   Geben Sie diese Klausel an, um die Tabelle bis zum Ende der Verbindung zu sperren. Wenn die Klausel nicht angegeben ist, wird die Sperre aufgehoben, wenn die aktuelle Transaktion festgeschrieben oder zurückgesetzt ist.

  • SHARE MODE-Klausel   Geben Sie die Klausel an, um eine gemeinsame Tabellensperre für die Tabelle zu setzen, damit andere Transaktionen nicht die Tabelle ändern, wohl aber darin lesen können. Wenn eine Transaktion eine gemeinsame Tabellensperre für eine Tabelle setzt, kann sie Daten in der Tabelle ändern, sofern keine andere Transaktion eine Sperre für die zu ändernden Zeilen gesetzt hat.

  • EXCLUSIVE MODE-Klausel   Geben Sie diese Klausel an, um eine exklusive Tabellensperre für die Tabelle zu setzen, sodass andere Transaktionen nicht auf die Tabelle zugreifen können. Keine andere Transaktion kann Abfragen, Aktualisierungen oder eine andere Aktion für die Tabelle ausführen. Wenn eine Tabelle mit einer Anweisung wie z.B. LOCK TABLE...IN EXCLUSIVE MODE exklusiv gesperrt ist, ist es das Standardverhalten, keine Zeilensperren für die Tabelle zu setzen. Dieses Verhalten kann deaktiviert werden, indem Sie die subsume_row_locks-Option auf OFF setzen.

Bemerkungen

Die LOCK TABLE-Anweisung gestattet eine direkte Steuerung des gleichzeitigen Zugriffs auf eine Tabelle, und zwar unabhängig von der aktuellen Isolationsstufe.

Während die Isolationsstufe einer Transaktion im Allgemeinen die Art der Sperren bestimmt, die gesetzt werden, wenn die aktuelle Transaktion eine Anforderung ausführt, ermöglicht die LOCK TABLE-Anweisung eine explizitere Steuerung der Zeilensperrung in einer Tabelle.

Sie können die LOCK TABLE-Anweisung nicht mit einer Ansicht ausführen. Wenn Sie aber die LOCK TABLE-Anweisung mit einer Basistabelle ausführen, wird eine gemeinsame Schemasperre erstellt, die abhängige Ansichten sperrt. Eine gemeinsame Schemasperre bleibt, bis die Transaktion festgeschrieben oder zurückgesetzt ist.

Berechtigungen

Um eine Tabelle im SHARE-Modus zu sperren, sind SELECT-Berechtigungen erforderlich.

Um eine Tabelle im EXCLUSIVE-Modus zu sperren, müssen Sie der Tabelleneigentümer sein oder über DBA-Berechtigungen verfügen.

Nebenwirkungen

Andere Transaktionen, die auf die gesperrte Tabelle zugreifen müssen, können verzögert oder blockiert werden.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Die folgende Anweisung hält andere Transaktionen davon ab, die Tabelle 'Customers' während der aktuellen Transaktionen zu ändern:

LOCK TABLE Customers
IN SHARE MODE;