UPDATE
El patrón UPDATE de Crono SQL actualiza los registros de la tabla destino cuyos valores hayan cambiado respecto a los datos de origen. Es una actualización inteligente: solo modifica los registros que realmente han cambiado, lo que reduce la carga sobre la base de datos y mantiene la precisión del campo de auditoría update_date.
La clave de carga se declara con KEY (col1, col2) en la cabecera. Es obligatoria.
UPDATE dwh.dim_products KEY (product_id)SELECT products.product_id, products.product_name, categories.category_name, suppliers.company_name AS supplierFROM staging.productsINNER JOIN staging.categories USING category_idINNER JOIN staging.suppliers USING supplier_idUn producto cuyo nombre o categoría haya cambiado quedará actualizado en dwh.dim_products. Un producto sin cambios no genera ninguna operación en la base de datos.
La consulta del UPDATE admite toda la potencia del SELECT de Crono SQL. El siguiente ejemplo actualiza el precio de coste de los productos a partir de la última orden recibida de cada proveedor:
UPDATE dwh.dim_products KEY (product_id)SELECT order_details.product_id, max(order_details.unit_price) AS last_unit_priceFROM staging.order_detailsINNER JOIN staging.orders USING order_idGROUP BY order_details.product_idCompatibilidad ANSI
Sección titulada «Compatibilidad ANSI»Por compatibilidad, Crono SQL también soporta la sintaxis estándar del UPDATE:
UPDATE dwh.dim_productsSET product_name = 'Nuevo nombre'WHERE product_id = 1Esta forma ANSI no mantiene auditoría ni realiza detección de cambios.