Dieser Abschnitt behandelt folgende Themen:
Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen
Siehe auch UPDATE - SQL im Teil Natural for Db2 in der Datenbankmanagementsystem-Schnittstellen-Dokumentation:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Das SQL-Statement UPDATE dient zum Aktualisieren von Zeilen in einer Tabelle
ohne Benutzung eines Cursor ("Searched"
UPDATE) oder Spalten in einer Zeile, auf die ein Cursor
positioniert ist (("Positioned"
UPDATE).
Es sind zwei unterschiedliche Strukturen möglich:
Das Searched UPDATE-Statement ist ein eigenständiges Statement, das ohne
Referenzierung zu einem SELECT-Statement verwendet werden kann. Mit einem einzigen
Statement können Sie keine, eine, mehrere oder alle Zeilen einer Tabelle ändern. Welche
Zeilen geändert werden, bestimmen Sie mit der Suchbedingung (siehe search-condition), die auf die
Tabelle angewendet wird. Optional ist es möglich, einem Tabellen- oder View-Namen einen
Korrelationsnamen (siehe correlation-name)
zuzuweisen.
Anmerkung
Die Anzahl der Zeilen, die mit einem Searched UPDATE-Statement
tatsächlich geändert wurden, kann mit der Systemvariablen *ROWCOUNT (siehe
Systemvariablen-Dokumentation) ermittelt werden.
|
||||||||||||||||||||||
|
||||||||||||||||||||||
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax Symbols.
Syntax-Element-Beschreibung - Syntax 1:
| Syntax-Element | Beschreibung | |
|---|---|---|
view-name
|
View-Name:
|
|
period-clause |
Period-Klausel:
Gibt an, dass für das Ziel der Aktualisierungsoperation eine Period-Klausel gilt. Weitere Informationen siehe Period-Klausel im Abschnitt Grundlegende Syntaxbestandteile. |
|
correlation-name
|
Correlation-Name:
Das Element Weitere Informationen siehe |
|
include-columns |
Include Columns-Klausel:
Gibt einen Satz Spalten an, die zusammen mit den
Weitere Informationen siehe include-columns. |
|
SET
|
SET-Klausel:
Wenn sich die Änderungen auf einen View beziehen, müssen Sie in
der Wenn sich die Änderungen auf eine Tabelle beziehen, können Sie in der
|
|
assignment-list
|
Assignment List: Siehe Assignment
List weiter unten.
|
|
WHERE
search-condition
|
WHERE-Klausel:
In der Wenn Sie keine |
|
WITH
|
WITH - Isolation Level-Klausel:
Diese Klausel ermöglicht die explizite Angabe der beim Auffinden der zu aktualisierenden Zeile zu verwendenden Isolationsstufe. Weitere Informationen siehe WITH
isolation-level in der Beschreibung des
|
|
CS |
Cursorstabilität | |
RR |
Wiederholtes Lesen | |
RS |
Lesestabilität | |
SKIP LOCKED DATA |
SKIP LOCKED DATA-Klausel:
Gibt an, dass Zeilen übersprungen werden, wenn wegen anderer Transaktionen unverträgliche Sperren auf der Zeile liegen. |
|
QUERYNO
integer
|
QUERYNO-Klausel:
Diese Klausel ermöglicht Ihnen die explizite Angabe der in
|
|
|
|
column-name = |
|
scalar-expression |
|
|
, |
|
DEFAULT |
|||||||
NULL |
In einer Zuordnungsliste (assignment-list)
können Sie einer oder mehreren Spalten Werte zuweisen. Ein Wert kann entweder ein
Skalar-Ausdruck (scalar-expression),
DEFAULT oder NULL sein. Weitere Informationen siehe
Skalar-Ausdrücke.
Wenn Sie NULL zuweisen, bedeutet dies, dass das betreffende Feld keinen
Wert enthalten soll (auch nicht den Wert "0" oder "leer").
Alternative:
| (column-name,...) =( |
|
|
scalar-expression |
|
, |
|
|
) | |||
DEFAULT |
|||||||||||
NULL |
|||||||||||
| row-fullselect | |||||||||||
Syntax-Element-Beschreibung
Das Positioned UPDATE-Statement bezieht sich auf einen Cursor innerhalb
einer Datenbankschleife. Es muss daher dieselbe Tabelle bzw. denselben View referenzieren
wie das entsprechende SELECT-Statement, sonst erfolgt eine Fehlermeldung. Ein
Positioned UPDATE kann nur bei nicht-cursor-orientierter Selektion verwendet
werden.
Common Set-Syntax:
UPDATE
|
|
view-name
SET *
|
|
[WHERE CURRENT OF
CURSOR
(r)]
|
view-name
SET
assignment-list
|
Extended Set-Syntax:
UPDATE
|
|
view-name
SET *
|
|
[WHERE CURRENT OF
CURSOR
(r)
|
|
FOR
ROW |
|
[:]host-variable |
|
OF
ROWSET |
|
view-name
SET
assignment-list
|
integer |
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax Symbols.
Syntax-Element-Beschreibung - Syntax 2:
| Syntax-Element | Beschreibung |
|---|---|
view-name
|
View-Name:
|
SET *
|
SET-Klausel:
Wenn sich die Änderungen auf einen View beziehen, müssen Sie in der
Wenn sich die Änderungen auf eine Tabelle beziehen, können Sie in der
|
WHERE CURRENT OF CURSOR
(r) |
Statement-Referenz:
Mit der Notation |
FOR ROW …
OF ROWSET |
FOR ROW … OF ROWSET-Klausel:
Diese Klausel gehört zum SQL Extended Set. Die optionale Wenn diese Klausel weggelassen wird, werden alle Zeilen der aktuellen
Zeilengruppe durch die Werte in der Zuordnungsliste ( Diese Klausel kann nicht angegeben werden, wenn
|
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... ASSIGN AGE = 45 ASSIGN NAME = 'SCHMIDT' UPDATE PERS SET * WHERE NAME = 'SCHMIDT' ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... UPDATE SQL-PERSONNEL SET AGE = AGE + 1 WHERE NAME = 'SCHMIDT' ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... SELECT * INTO PERS FROM SQL_PERSONNEL WHERE NAME = 'SCHMIDT' COMPUTE AGE = AGE + 1 UPDATE PERS SET * WHERE CURRENT OF CURSOR END-SELECT ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... SELECT * INTO PERS FROM SQL-PERSONNEL WHERE NAME = 'SCHMIDT' UPDATE SQL-PERSONNEL SET AGE = AGE + 1 WHERE CURRENT OF CURSOR END-SELECT ...