Databases Reference
In-Depth Information
Beispiele
Für den Kunden mit
kunden_nr = 100
soll
status
in
'G'
geändert werden.
UPDATE kunde
SET status = 'G'
WHERE kunden_nr = 100;
Die Wertzuweisung an die Spalte
status
erfolgt in diesem Beispiel über eine Kon-
stante. Die WHERE-Klausel gibt einen Vergleichswert
100
für
kunden_nr
an. Infol-
gedessen werden alle Kundeneinträge, deren
kunden_nr = 100
ist, der Änderung
unterzogen. Wegen der Primärschlüsseleigenschaft dieses Attributs ist dieses nur
ein einziger Kunde (oder gar keiner).
Im folgenden Beispiel wird bei allen Artikeln, deren
artikel_nr
mit
'K'
beginnt,
der Listenpreis um 10 % erhöht.
UPDATE artikel
SET listenpreis = listenpreis * 1.1
WHERE artikel_nr LIKE'K%'
Die Besonderheiten der WHERE-Klausel werden ausführlich in den Abschnitten
über die SELECT-Anweisung erläutert.
Verarbeitung der UPDATE-Anweisung
Zunächst wird die WHERE-Klausel geprüft. Für jedes Tupel, das die Selektionsbe-
dingung erfüllt, werden
alle
Ausdrücke in der SET-Klausel rechts vom Gleichheits-
zeichen auf Basis der alten Attributwerte berechnet. Anschließend wird den ent-
sprechenden Attributen links vom Gleichheitszeichen jeweils das Ergebnis der
Berechungen zugewiesen. Dies ist von besonderer Bedeutung, wenn von einer
UPDATE-Anweisung mehrere Spalten betroffen sind. Beispiel:
UPDATE artikel
SET bestand = bestand + 100,
mindestbestand = bestand;
In der letzten Zeile wird für den Mindestbestand der alte Bestandswert - nicht der
um 100 erhöhte - eingesetzt.
Wenn eine Kundennummer geändert wird - was man wegen weitreichender orga-
nisatorischer Konsequenzen lieber nicht tun sollte -, wird nach den bei der Daten-
definition festgelegten Regeln
(ON UPDATE CASCADE)
die Änderung an die Tabellen
bestellung
und
girokonto
weitergegeben.
Beispiel:
UPDATE kunde
SET kunden_nr = 999
WHERE kunden_nr = 105