Is bulk upsert run in a single transcation?

Hello, I see the docs here.
It say bulk update is run in a single transcation. Not mention not upsert

Bulk updates via a primary key
If you'd like to make a bulk update to your database, you can pass in an array of records to update. An example of this is shown below:

In this example, Retool will first ensure that the ProductID column is a unique key in the database table. If it is a unique key, Retool will iterate through the array and, for each member, merge the new values with the existing database record. In this case, it will update the product with id = 680 to have the new color of Red and update the product with id of 706 to a new color of Green.


The entire statement runs in a single transaction. If an error occurs in any of the updates, the transaction is rolled back with no effect on the database
The query will timeout automatically after thirty seconds to prevent long running transactions from interfering with other database queries
Bulk upserts via a primary key
This works just like "bulk updates via a primary key" above, but allows you to insert new records at the same time by including objects with new primary keys in the "array of records to update" field.

Query JSON with SQL

Hi @AnsonHwang,

It should be operating as a single transaction. It sounds like it runs one statement per record to update/create, all wrapped in a transaction in case there's an issue.