START TRANSACTION
The START TRANSACTION
statement is used to begin a transaction.
All statements within a transaction will not be visible to other transactions
until all changes are applied with COMMIT
or all changes are discarded with
ROLLBACK
.
Nested transactions are not supported. Attempting to run START TRANSACTION
when already in a transaction will result in an error.
Syntax
START TRANSACTION
Implicit Transactions
When a transaction is not explicitely used, each statement will be automatically
wrapped in an implicit transaction. Internally this is important becuase any
statements that may make changes (such as a DELETE
that removes multiple
rows) should seem atomic to all other readers and writers.
Catalogs
Transactions across catalogs are semi-supported. That is, transaction isolation
is not guaranteed across catalogs for all operations. And COMMIT
and
ROLLBACK
may independently succeed or fail.
Examples
-- From connection 1:
START TRANSACTION;
INSERT INTO products (name, price)
VALUES ('Coffee Machine', 150);
-- From connection 2:
SELECT * FROM products;
-- empty
-- From connection 1:
COMMIT;
-- From connection 2:
SELECT * FROM products;
-- NAME: Coffee Machine PRICE: 150