Aktualisierungsklausel
Die Klausel FOR UPDATE gibt die Spalten an, die Ziele in einer Zuordnungsklausel in einer nachfolgenden positionierten Anweisung UPDATE sein können. Jeder spaltenname muss nicht qualifiziert sein und eine Spalte der Tabelle oder Sicht angeben, die in der ersten FROM-Klausel des Fullselects angegeben ist.
Wenn eine Klausel FOR UPDATE mit einer Liste spaltenname angegeben wird und erweiterte Indikatorvariablen nicht aktiviert sind, muss spaltenname eine aktualisierbare Spalte sein (SQLSTATE 42808).
Wenn eine Klausel FOR UPDATE ohne eine Liste spaltenname angegeben wird, wird die implizite Liste spaltenname wie folgt bestimmt:
- Wenn erweiterte Indikatorvariablen aktiviert sind, werden alle Spalten der Tabelle oder Sicht eingeschlossen, die in der ersten FROM-Klausel des Fullselect angegeben sind.
- Wenn erweiterte Indikatorvariablen nicht aktiviert sind, werden alle aktualisierbaren Spalten der Tabelle oder Sicht eingeschlossen, die in der ersten FROM-Klausel des Fullselects angegeben sind.
Die Klausel FOR UPDATE kann nicht verwendet werden, wenn eine der folgenden Bedingungen zutrifft:
- Der Cursor, der der Anweisung SELECT zugeordnet ist, kann nicht gelöscht werden.
- Eine der ausgewählten Spalten ist eine nicht aktualisierbare Spalte einer Katalogtabelle und die Klausel FOR UPDATE wurde nicht verwendet, um diese Spalte auszuschließen.
Wenn die Liste der zu aktualisierenden Spalten den Partitionsschlüssel einer partitionierten Tabelle enthält, werden alle qualifizierten Zeilen mit einem Bügelschloss gesperrt, um zu verhindern, dass dieselbe Zeile zweimal geändert wird.
