Edición de Tabla Externa (edit_table)
La automatización edit_table permite editar de forma automática una fila específica en una tabla destino externa (target_table) cuando se realiza una inserción o modificación en la tabla origen.
Cómo Funciona
Section titled “Cómo Funciona”- Búsqueda Exacta: El motor busca la fila a editar en la tabla destino utilizando los criterios en
match_columns.- Contrato de Fila Única: Por seguridad, la búsqueda debe retornar exactamente un registro. Si no se encuentra ninguna fila coincidente, o si se encuentra más de una, la transacción se abortará y mostrará un error.
- Aplicación de Operación: Aplica la operación matemática o de asignación sobre el campo
target_field. - Acciones Post-Edición (
case): Opcionalmente, se puede configurar una regla secundaria para que, si el valor final del campo cumple con una condición (ej. llegar a cero), la fila destino se elimine por completo.
Configuración de Reglas JSON
Section titled “Configuración de Reglas JSON”Estructura de propiedades requeridas dentro de rules para una automatización de tipo edit_table:
Propiedades Requeridas
Section titled “Propiedades Requeridas”target_table: Tabla externa donde se encuentra la fila a editar (ej.tableA).target_field: Columna física en la tabla destino a modificar (ej.tAc8).match_columns: Lista de comparaciones para encontrar la fila exacta en el destino.response: El valor que se aplicará. Puede ser:- Un literal fijo (número, texto o booleano).
- Un campo dinámico del registro de origen usando el formato
prop(columna).
Propiedades Opcionales
Section titled “Propiedades Opcionales”operation: Define cómo se aplicará el valor. Valores soportados:set(por defecto): Asigna directamente el valor a la columna destino (target_field = response).add: Suma el valor al saldo actual (target_field = target_field + response).sub: Resta el valor al saldo actual (target_field = target_field - response).- Nota: Para
addysub, tanto el valor de la columna destino como el resolvedor deresponsedeben ser de tipo numérico.
case: Acción condicional posterior. Permite eliminar el registro destino si se cumple una igualdad numérica.- Estructura:
{ "when": { "eq": 0 }, "then": "delete" }
- Estructura:
Ejemplos de Configuración
Section titled “Ejemplos de Configuración”Ejemplo 1: Asignación Directa (set)
Section titled “Ejemplo 1: Asignación Directa (set)”Cambia el estado de un registro en tableA a "ACTIVO" basándose en una coincidencia simple:
{ "target_table": "tableA", "target_field": "tAc8", "operation": "set", "response": "ACTIVO", "match_columns": [ { "source": "tBc1", "target": "tAc1" } ]}Ejemplo 2: Restar Cantidad y Eliminar si llega a Cero (sub + case)
Section titled “Ejemplo 2: Restar Cantidad y Eliminar si llega a Cero (sub + case)”Resta el valor de la columna de origen tBcV0 de la columna destino tAc8. Si después de la resta, el valor de tAc8 es igual a 0, la fila destino se elimina automáticamente:
{ "target_table": "tableA", "target_field": "tAc8", "operation": "sub", "response": "prop(tBcV0)", "case": { "when": { "eq": 0 }, "then": "delete" }, "match_columns": [ { "source": "tBc1", "target": "tAc1" }, { "source": "tBc2", "target": "tAc2" } ]}