La sentencia UPDATE cambia los valores de columnas específicas, en filas seleccionadas, en una tabla en una base de datos externa.
>>-UPDATE--ReferenciaTabla--+-----------------------+-----------> '-AS--NombreCorrelación-' .-,------------------. V | >--SET----Column = Expresión-+--+------------------+----------->< '-WHERE--Expresión-' WHERE |--ReferenciaTabla = --Database--------------------------------> >--+------------------------------------------------+-----------> '-+------------------------+--.--CláusulaEsquema-' '-.--CláusulaOrigenDatos-' >--.--CláusulaTabla---------------------------------------------| |--CláusulaOrigenDatos = --+-NombreOrigenDatos----------+------| '-{--ExpresiónOrigenDatos--}-' |--CláusulaEsquema = --+-NombreEsquema----------+--------------| '-{--ExpresiónEsquema--}-' |--CláusulaTabla = --+-NombreTabla----------+------------------| '-{--ExpresiónTabla--}-'
Si no se especifica un nombre de esquema, se utiliza el esquema predeterminado para el usuario de base de datos del intermediario.
Si no se especifica un nombre de origen de datos, se utiliza la base de datos que indica el atributo data source del nodo.
La expresión de la cláusula WHERE puede utilizar cualquier operador y función del intermediario en cualquier combinación. Puede hacer referencia a columnas de tabla, campos de mensajes y cualquier constante o variable declarada.
Sin embargo, tenga en cuenta que el intermediario trata la expresión de la cláusula WHERE examinando la expresión y decidiendo si la base de datos puede evaluar toda la expresión. Si puede, se suministra a la base de datos. Para que pueda evaluarla la base de datos, debe utilizar únicamente las funciones y operadores a los que dé soporte la base de datos.
No obstante, la cláusula WHERE hace referencia a campos de mensajes, nombres de correlación declarados mediante funciones SELECT que las contienen, y a cualquier otra variable o constante declarada dentro del ámbito.
Es posible que se produzcan errores durante las operaciones de actualización. Por ejemplo, es posible que la base de datos no esté operativa, o la tabla puede tener restricciones definidas que los nuevos valores violarían. En estos casos, se genera una excepción (a menos que el nodo tenga su propiedad Generar excepción en error de base de datos establecida en FALSE). Estas excepciones establecen los valores SQL adecuados de código, estado, error nativo y texto de error, y pueden ser manejadas por los manejadores de errores (consulte la sentencia DECLARE HANDLER).
Para obtener más información sobre el manejo de errores de base de datos, consulte Captura del estado de la base de datos.
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;
Observe que los nombres de columna (a la izquierda del signo "=") son identificadores solos. No deben calificarse con un nombre de tabla o un nombre de correlación. Por el contrario, las referencias a las columnas de base de datos en las expresiones (a la derecha del signo "=") deben calificarse con el nombre de correlación.
-- Declarar variables para que contengan los nombres de origen de datos, esquema y tabla
-- y establecer sus valores predeterminado
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table CHARACTER 'DynamicTable1';
-- Aquí va el código que calcula sus valores actuales
-- Actualizar las filas en la tabla
UPDATE Database.{Source}.{Schema}.{Table} AS R SET Value = 0;