DB: Insert Batch (header + figli, atomico)

db_insert_batch · action · Database · Disponibile · v1.1.0

Descrizione

Inserisce in modo ATOMICO un header (es. ordine) + N righe figlie (es. order_lines), tutto in una transazione singola. Se l'inserzione delle righe fallisce, anche l'header viene rollbackato — niente ordini fantasma in DB. Tipico per: orders+order_lines, invoices+invoice_lines, deliveries+delivery_items.

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
databaseId
Database
db-pickersi
headerTable
Tabella header
db-table-pickersiEs. "orders". 1 riga inserita.
headerRowJson
Header row (JSON)
codesi
{ "order_number": "{{input.order_number}}", "supplier_code": "{{input.supplier_code}}" }
JSON object con le colonne dell'header. Espressioni {{}} risolte runtime.
childTable
Tabella children
db-table-pickersiEs. "order_lines". N righe inserite.
childRowsExpression
Espressione array children
expressionsi
input.lines
Espressione JS che ritorna l'array di righe figlie. Esempi: input.lines · input.order_lines · output.items. Riceve `input` (output del nodo precedente).
refColumn
Colonna FK (children → header)
stringsi
order_id
Nome della colonna sul child che riferisce l'id dell'header. Es. "order_id" se order_lines.order_id REFERENCES orders.id.
onConflict
Se l'header esiste già
enum
failignore
nofail"fail" (default): se l'header viola un UNIQUE/PK, errore (utile per accorgersi di duplicati indesiderati). "ignore": se l'header esiste già, salta l'intero batch atomico e ritorna { alreadyExisted: true } — utile per workflow ricevuti più volte sullo stesso input (es. webhook con retry, email duplicate).
skipColumns
Colonne da NON inserire (comma-separated)
stringnoline_total,net_price,price_discrepancy_flagLista di nomi colonna da rimuovere prima del INSERT. Tipicamente colonne GENERATED in DB SQL (es. line_total REAL GENERATED ALWAYS AS qty*price*(1-discount)) che il DB rifiuta di accettare in INSERT. Default coprono il 90% dei casi italian-procurement. Aggiungere/togliere secondo schema reale del tuo DB.

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-db_insert_batch-1",
  "defId": "db_insert_batch",
  "label": "DB: Insert Batch (header + figli, atomico)",
  "config": {
    "databaseId": "<databaseId>",
    "headerTable": "<headerTable>",
    "headerRowJson": "{\n  \"order_number\": \"{{input.order_number}}\",\n  \"supplier_code\": \"{{input.supplier_code}}\"\n}",
    "childTable": "<childTable>",
    "childRowsExpression": "input.lines",
    "refColumn": "order_id",
    "onConflict": "fail",
    "skipColumns": "line_total,net_price,price_discrepancy_flag"
  }
}

Pronto a usare DB: Insert Batch (header + figli, atomico)?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi