Skip to content

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.


  1. 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.
  2. Aplicación de Operación: Aplica la operación matemática o de asignación sobre el campo target_field.
  3. 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.

Estructura de propiedades requeridas dentro de rules para una automatización de tipo edit_table:

  • 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).
  • 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 add y sub, tanto el valor de la columna destino como el resolvedor de response deben 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" }

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" }
]
}