This Dokument behandelt folgende Themen:
Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen
Siehe auch die folgenden Abschnitte in der Database Management System Interfaces-Dokumentation:
UPDATE - SQL im Teil Natural for DB2
UPDATE - SQL im Teil Natural SQL Gateway
UPDATE - SQL im Teil Natural for SQL/DS
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
|
Korrelationsname:
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 ...