Die UPDATE-Anweisung ändert die Werte von angegebenen Spalten, in ausgewählten Zeilen, in einer externen Datenbanktabelle.
>>-UPDATE--Tabellenverweis--+-----------------------+-----------> '-AS-- Korrelationsname-' .-,-----------------. V | >--SET----Spalte = Ausdruck-+--+------------------+------------>< '-WHERE-- Ausdruck-' WHERE |--Tabellenverweis = --Database--------------------------------> >--+----------------------------------------------+-------------> '-+------------------------+--.--Schemaklausel-' '-.--Datenquellenklausel-' >--.--Tabellenklausel-------------------------------------------| |--Datenquellenklausel = --+-Datenquellenname-----------+------| '-{--Datenquellenausdruck--}-' |--SchemaClause = --+-Schemaname-----------+-------------------| '-{--Schemaausdruck--}-' |--TableClause = --+-Tabellenname-----------+------------------| '-{--Tabellenausdruck--}-'
Wird kein Schemaname angegeben, wird das Standardschema des Benutzers der Broker-Datenbank verwendet.
Wenn Sie keinen Datenquellnamen angeben, wird die Datenbank verwendet, auf die das Datenquellattribut des Knotens verweist.
Der WHERE-Klauselausdruck kann alle Operatoren und Funktionen des Brokers in beliebiger Kombination verwenden. Er kann auf Tabellenspalten, Nachrichtenfelder und auf jede andere deklarierte Variable oder Konstante verweisen.
Beachten Sie jedoch, dass der Broker den WHERE-Klauselausdruck untersucht und entscheidet, ob der gesamte Ausdruck von der Datenbank bewertet werden kann. Wenn dies der Fall ist, wird er an die Datenbank übergeben. Damit ein Ausdruck von der Datenbank ausgewertet wird, darf er nur die von der Datenbank unterstützten Funktionen und Operatoren enthalten.
Die WHERE-Klausel kann jedoch auf Nachrichtenfelder, auf von enthaltenen SELECT-Funktionen deklarierte Korrelationsnamen sowie auf jede andere deklarierte Variable oder Konstante im Gültigkeitsbereich verweisen.
Bei den Aktualisierungen können Fehler auftreten, beispielsweise könnte die Datenbank nicht betriebsbereit sein oder für die Tabelle sind Einschränkungen definiert, die die neuen Werte verletzen könnten. In diesen Fällen wird eine Ausnahme ausgelöst (ausgenommen, die Knoteneigenschaft Ausnahme für Datenbankfehler ausgeben wurde auf FALSE gesetzt). Diese Ausnahmen richten die entsprechenden Wert für den SQL-Code, den Status, den systemeigenen Fehler und den Fehlertext ein und können von Fehlerbehandlungsprogrammen bearbeitet werden (siehe Anweisung DECLARE HANDLER).
Weitere Informationen zur Behandlung von Datenbankfehlern finden Sie unter Datenbankstatus erfassen.
UPDATE Database.StockPrices AS SP
SET PRICE = InputBody.Message.StockPrice
WHERE SP.COMPANY = InputBody.Message.Company
UPDATE Database.INVENTORY AS INV
SET QUANTITY = INV.QUANTITY - InputBody.Message.QuantitySold
WHERE INV.ITEMNUMBER = InputBody.Message.ItemNumber
UPDATE Database.table AS T
SET column1 = T.column1+1,
column2 = T.column2+2;
Beachten Sie, dass es sich bei den Spaltennamen (links neben dem "=") um Einzelkennungen handelt. Sie müssen nicht mit einem Tabellen- oder Korrelationsnamen qualifiziert werden. Im Gegensatz dazu müssen Verweise auf Datenbankspalten in den Ausdrücken (rechts neben dem "=") mit dem Korrelationsnamen qualifiziert werden.
-- Variablen deklarieren, die den Namen der Datenquelle, des Schemas und der Tabelle halten sollen und
-- ihre Standardwerte einrichten
DECLARE Source CHARACTER 'Produktion';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table CHARACTER 'DynamischeTabelle1';
-- Hier steht der Code, der ihren tatsächlicher Wert berechnet
-- Zeilen in der Tabelle aktualisieren
UPDATE Database.{Source}.{Schema}.{Table} AS R SET Value = 0;