A statement which changes something runs exactly as a `select` does: in a document, with "Execute" or "Execute All". What is different is what happens afterwards, and that is worth knowing before the first `update` rather than after it. ## The Statements - [[Invantive UniversalSQL/Grammar/Statement Types/Insert Statement (insertStatement)|insert]] adds rows, one at a time or from a `select` over another platform. - [[Invantive UniversalSQL/Grammar/Statement Types/Update Statement (updateStatement)|update]] changes the rows a `where` picks out. - [[Invantive UniversalSQL/Grammar/Statement Types/Delete Statement (deleteStatement)|delete]] removes them. The status bar reports how many rows were affected, and [[Invantive Query Tool/History|History]] keeps that figure with the statement. ## There Is No Undo A change sent to a platform is made there. The product has no transaction over a cloud platform to roll back, and "Undo" in the ribbon is the undo of the editor - it takes back what was typed, not what was executed. Where a platform does have transactions of its own, they are reached through the [[Invantive UniversalSQL/Grammar/Statement Types/Transaction Statement (transactionStatement)|transaction statements]] and apply to that platform alone. The practical consequence is a habit rather than a setting: write the `where` as a `select` first, look at the rows the grid returns, and only then turn it into an `update` or a `delete`. On a platform which is charged per call the `select` costs one call more; a wrong `delete` costs an afternoon. ## Row by Row Against a cloud platform a change is one call per row, because the platform's own interface takes one row at a time. An `update` over four thousand rows is therefore four thousand calls, which is what the [[Invantive Query Tool/Connection Monitor|Connection Monitor]] shows and what the [[Invantive Query Tool/Progress|Progress]] panel draws while it runs. Against a database - Microsoft SQL Server, Oracle, PostgreSQL, MySQL - the statement goes over as one statement. That difference decides how a large change is best done. A bulk load into a database belongs in one statement; the same volume into a cloud platform belongs in a run which can be watched, and in some cases in [[Invantive Data Hub/Invantive Data Hub|Invantive Data Hub]] at a moment when the platform is quiet. ## Which Partition It Lands In A change runs against the partitions selected in the ribbon, exactly as a read does; see [[Invantive Query Tool/Partitions|Partitions]]. Two partitions selected means the statement is executed against both. Naming the partition in the statement itself is the safer form for anything which is kept. ## Trying It Safely The [[Invantive Query Tool/Sample Database|sample database]] takes inserts, updates and deletes like any other container and forgets them when the connection closes, since it holds its tables in memory. It is the place to find out what a statement does before it is aimed at an administration.