UPDATE¶
Aktualisiert angegebene Zeilen in der Zieltabelle mit neuen Werten.
Syntax¶
Erforderliche Parameter¶
target_tableGibt die zu aktualisierende Tabelle an.
col_nameGibt den Namen einer Spalte der Zieltabelle
target_tablean. Geben Sie nicht den Tabellennamen an. Beispielsweise istUPDATE t1 SET t1.col = 1ungültig.valueGibt den neuen Wert an, der in der Spalte
col_nameeingestellt werden soll.
Optionale Parameter¶
FROM additional_tablesGibt eine oder mehrere Tabellen an, die zum Auswählen von zu aktualisierenden Zeilen oder zum Festlegen neuer Werte verwendet werden. Beachten Sie, dass die Wiederholung der Zieltabelle zu einer Selbstverknüpfung führt.
WHERE conditionAusdruck, der die zu aktualisierenden Zeilen in der Zieltabelle angibt.
Standard: Kein Wert (alle Zeilen der Zieltabelle werden aktualisiert)
Nutzungshinweise¶
Wenn eine FROM-Klausel ein JOIN zwischen Tabellen (z. B.
t1undt2) enthält, kann eine Zielzeile int1mit mehr als einer Zeile in Tabellet2verknüpft werden (d. h. übereinstimmen). Wenn dies geschieht, wird die Zielzeile als mehrfach verknüpfte Zeile bezeichnet. Beim Aktualisieren einer mehrfach verknüpften Zeile steuert der Sitzungsparameter ERROR_ON_NONDETERMINISTIC_UPDATE das Ergebnis der Aktualisierung:Bei
FALSE(Standardwert) wird kein Fehler zurückgegeben, und eine der verknüpften Zeilen wird zum Aktualisieren der Zielzeile verwendet. Die ausgewählte verknüpfte Zeile ist jedoch nicht deterministisch.Bei
TRUEwird ein Fehler zurückgegeben, der ein Beispiel für die Werte einer Zielzeile enthält, die mehrere Zeilen verbindet.
So legen Sie den Parameter fest:
Beispiele¶
Führen Sie ein Standard-Update mit zwei Tabellen aus:
Aktualisieren Sie mit einer Verknüpfung, die nicht deterministische Ergebnisse liefert:
Bei ERROR_ON_NONDETERMINISTIC_UPDATE = FALSE aktualisiert die Anweisung die einzelne Zeile in
targetzufällig mit Werten aus einer der folgenden Zeilen insrc:
(0, 11),(0, 12),(0,13)Bei ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE wird ein Fehler zurückgegeben, der eine doppelte DML-Zeile
[0, 10]meldet.
Um dieses nicht deterministische Verhalten und diesen Fehler zu vermeiden, verwenden Sie eine 1-zu-1-Verknüpfung:
Diese Anweisung führt dazu, dass die einzelne Zeile in
targetauf(0, 11)aktualisiert wird (Werte aus der Zeile mit dem Mindestwert fürvinsrc) und niemals zu einem Fehler führt.