Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Schränkt den Zugriff auf eine Datenbanktabelle ein. Dieser Befehl ist nur sinnvoll, wenn er innerhalb eines Transaktionsblocks ausgeführt wird.
Der LOCK-Befehl bewirkt eine Sperrung auf Tabellenebene im Modus ACCESS EXCLUSIVE und wartet auf die Freigabe widersprüchlicher Sperren, wenn notwendig. Die explizite Sperrung einer Tabelle auf diese Weise führt dazu, dass Lese- und Schreibvorgänge für die Tabelle abwarten, wenn sie über andere Transaktionen oder Sitzungen versucht werden. Eine explizite Tabellensperre, die von einem Benutzer erstellt wird, hindert andere Benutzer vorübergehend daran, Daten aus dieser Tabelle auszuwählen oder Daten in diese Tabelle zu laden. Die Sperre wird aufgehoben, wenn die Transaktion, die den LOCK-Befehl enthält, abgeschlossen ist.
Befehle, die Tabellen referenzieren, wie Schreibvorgänge, bewirken implizit weniger einschränkende Tabellensperren. Wenn ein Benutzer beispielsweise versucht, Daten aus einer Tabelle zu lesen, während ein anderer Benutzer die Tabelle aktualisiert, stellen die gelesenen Daten einen Snapshot der Daten dar, für die bereits ein Commit ausgeführt wurde. (In einigen Fällen werden Abfragen abgebrochen, wenn sie Regeln für die serialisierbare Isolierung verletzen.) Siehe Verwalten gleichzeitiger Schreiboperationen.
Einige DDL-Operationen, wie z. B. DROP TABLE und TRUNCATE, erstellen exklusive Sperren. Diese Operationen verhindern, dass Daten gelesen werden.
Wenn ein Sperrkonflikt auftritt, zeigt Amazon Redshift eine Fehlermeldung an, um den Benutzer zu warnen, der die konfliktbehaftete Transaktion gestartet hat. Die Transaktion, die den Sperrkonflikt empfangen hat, wird abgebrochen. Jedes Mal, wenn ein Sperrkonflikt eintritt, schreibt Amazon Redshift einen Eintrag in die Tabelle STL_TR_CONFLICT.
Syntax
LOCK [ TABLE ] table_name [, ...]
Parameter
- TABLE
-
Optionales Schlüsselwort.
- table_name
-
Der Name der Tabelle, die gesperrt werden soll. Sie können mehrere Tabellen sperren, indem Sie eine Liste verwenden, in der Tabellennamen durch Komma getrennt werden. Sie können keine Ansichten sperren.
Beispiel
begin;
lock event, sales;
...