English
Table — update a row
Changes the row carrying this key. The step fails if no row matches.
Changes the row of a Table that carries a given key. Only the columns you name change; the others keep their value. If no row carries the key, the step fails — when a missing row should be created, use Table — insert or update.
At a glance
- Type:
table.update· version 1 - Category: Actions
- Kind: Step — one stage of a run
- Effect: Writes outside (
external_write) — writes outside Mankomail; described instead of performed during a test run - Needs a carrier email: No
- Connection: None
- Inputs:
main - Outputs:
main
Parameters
table
Table — Picked from the list, or by its short identifier (its “slug”), which may come from a template.
- Type: Remote resource (
resourceLocator) - Required: Yes
- Ways to choose: pick from a list, type an ID (
table)
key
Row key — The row to change, designated by the values of its “key” columns.
- Type: List of items (
collection) - Required: Yes
- Default:
[] - At most 8 items
- Each item has:
column— Key column- Type: Text (
string) - Required: Yes
- Default:
""(empty) - 60 characters at most
- Expressions:
{{ }}not accepted
- Type: Text (
value— Value to match- Type: Text (
string) - Required: No
- Default:
""(empty) - 10000 characters at most
- Type: Text (
values
Columns to change — Only the columns named here change. The others keep what they hold.
- Type: List of items (
collection) - Required: No
- Default:
[] - At most 60 items
- Each item has:
column— Column- Type: Text (
string) - Required: Yes
- Default:
""(empty) - 60 characters at most
- Expressions:
{{ }}not accepted
- Type: Text (
value— Value. Converted into the column type: “1,234.50” becomes a number, “yes” a boolean, “2026-04-03” a date. Anything it cannot read is refused, never blanked.- Type: Text (
string) - Required: No
- Default:
""(empty) - 10000 characters at most
- Type: Text (
Outputs
main
Data produced
What this node adds to the run data, and how to read it in an expression. <step> stands for the step key: the node name turned into an identifier (see Data and expressions).
{{ data.<step>.rowId }}—string. The identifier of the row updated.{{ data.<step>.row.<column> }}—object. The whole row after the update, by column machine key — the columns you changed and the ones you left alone. Empty cells are absent.{{ data.<step>.created }}—boolean. Always false: this node never creates a row.{{ data.<step>.reused }}—boolean. true when the step was replayed after an incident and the row written by the first attempt was returned, without writing again.{{ data.<step>.simulated }}—boolean. true in a test run: nothing was written.{{ data.<step>.summary }}—string. A one-line summary:Row updated.,Would have updated the row.orAlready written on an earlier attempt: nothing was rewritten.
Example
When a client confirms an appointment, the matching case moves to "Confirmed". The table cases has the key column case_number. The node is named "Mark confirmed".
text
table cases
key case_number = {{ data.read_reply.case_number }}
values status = Confirmed
confirmed_on = {{ data.read_reply.date }}The next node can read the whole updated row, for example {{ data.mark_confirmed.row.client_email }}.
Tips
- The key designates the row; the values change it. The Row key lists the values of the columns ticked Part of the matching key in the table; matching ignores case, accents and punctuation. Columns to change lists the columns to write.
- Changing the key. You may list a key column in Columns to change: the row is then filed under its new key.
- Errors. No row carries the key:
table.row_not_found. Unknown column:table.unknown_column. A value that does not fit its column type:table.invalid_value. A table with no key column:table.no_key. These failures are final. - Columns are named by their machine key, not their heading. Lookup by key relies on the table option Refuse two rows with the same key; keep it ticked on a table you update by key.
- Replays are safe. A replay after an incident returns the row written by the first attempt (
reused: true) without writing again. - Test runs. Nothing is written, but the row is really looked up: if it does not exist, the test fails just as a real run would. Otherwise the step returns the row as it would be after the update, with
simulated: true. See Test runs.