Six MySQL steps work with your own MySQL or MariaDB database, one step for each thing you do:
- MySQL · Run a query — Runs SQL you write, with values as parameters.
- MySQL · Insert rows — Adds a row to a table, a value for each column you fill in.
- MySQL · Update rows — Changes the columns you fill in, in the rows that match.
- MySQL · Delete rows — Deletes the rows that match.
- MySQL · Find rows — The rows of a table that match, in the order you choose.
- MySQL · Run a stored procedure — Calls a procedure in the database with the values you give.
In the step picker, the steps that change data say so: Changes data on Insert rows and Update rows, Deletes data on Delete rows, and Can change data on Run a query and Run a stored procedure, whose effect depends on the SQL. The same tag and a sentence sit at the top of each step's settings.
Who can do this
Workspace Admins and Editors. MySQL is a paid-plan service: you can build and test these steps on any plan; publishing needs a paid plan.
Before you start
A MySQL connection in this workspace — see Connect a MySQL or MariaDB database. Its user needs the rights each step uses: SELECT to find, INSERT, UPDATE or DELETE to change rows, EXECUTE to run a procedure.
Steps
- Select +, then in Apps select MySQL, or search MySQL. Choose the step.
- Choose the Connection.
- Fill in the step:
Run a query — in Query, write the SQL. It starts with an example:
select id, status, total from orders where phone = @phoneName each value @like_this and give it under Parameters. Under Parameters, add each
@nameand its value, usually{{ }}from an earlier step.Insert rows — choose the Table. Under Columns, the table's columns load from the database; give a value for each one you want set. Only the columns you fill in are set; the rest take the table's defaults.
Update rows — choose the Table. Under Where, add a column and the value it must hold for each condition — every row given must match. Under New values, fill in the columns to change.
Delete rows — choose the Table and fill in Where as for Update rows. Deleted rows cannot be brought back.
Find rows — choose the Table, and optionally Where, Order by a column, and Order — Lowest first or Highest first.
Run a stored procedure — choose the Procedure. Under Parameters, its parameters load from the procedure; give each a value. One left empty is sent as NULL.
- Optional, on Run a query, Find rows and Run a stored procedure: Most rows — 1,000 unless you change it, up to 10,000.
- Select Run this step, then check Output.
Output
| Field | What it is |
|---|---|
count |
How many rows came back — or, for Insert, Update and Delete, how many changed. |
rows |
The rows, each by its column names. Insert rows gives the row it wrote, with the id the database gave it. |
affected |
How many rows an insert, update or delete changed. 0 for a select. |
insertedId |
Insert rows only: the id the database gave the new row, when the table has an auto-increment column. |
outputs |
Run a stored procedure only, when it has OUT or INOUT parameters: each by its name. |
note |
Only when cut: Only the first 1,000 rows are kept. (or the number you set). |
Good to know
- Values are always parameters.
{{ }}is never allowed inside a query; on the other steps, every value you give is sent as a parameter, never glued into the SQL. - Tables, columns and procedures come from the database's own lists. A value from an earlier step cannot name a table — Choose the table from the list.
- A value takes its column's type. A number column gets a number, a date column a date — 2026-10-02T11:15:00Z from an earlier step is stored as that time in UTC — and an empty value in anything but a text column is stored as NULL.
- Where matches equal values. Each row under Where is column = value; an empty value matches NULL. For anything else — greater than, LIKE, OR — use Run a query.
- Update rows and Delete rows always need Where. To change or delete every row, use Run a query.
- 15 seconds to connect, 30 seconds to run. Each step runs once per item.
- Paid: a live run on a plan without paid services is skipped; tests work on any plan.
If something goes wrong
| What the run says | Why | What to do |
|---|---|---|
| MySQL refused: … | MySQL refused the statement — a column that does not allow NULL, a duplicate key, a right the user lacks. | Read the reason; grant the user the right, or change the values. |
| Put values from earlier steps in Parameters — @name in the query — never in the query itself. | The query contains {{ }}. |
Move each value into Parameters. |
| Choose the table from the list. A value from an earlier step cannot name it. | Table holds a {{ }}. |
Choose the table from the list. |
| The database has no table named … Refresh the list and choose again. | The table was renamed or dropped. | Refresh and choose again. |
| … has no column named “…”. Refresh the columns and choose again. | A column under Where, Columns or Order by is not in the table. | Refresh the columns and fix the row. |
| Say which rows to change under Where. To change every row, use Run a query. | Where is empty on Update rows. | Add a condition. The same for Delete rows. |
| Give a value for at least one column. | No column has a value on Insert rows. | Fill in a column. |
| MySQL refused the user or password. … | The connection's sign-in stopped working. | Reconnect on Connections. |
| … is not on the public internet, so workflows cannot reach it. | The server is private. | Use a server on the public internet. |