As explained in the manual:
By default, MySQL runs with autocommit mode enabled. This means that as soon as you execute a statement that updates (modifies) a table, MySQL stores the update on disk to make it permanent. The change cannot be rolled back.
To disable autocommit mode implicitly for a single series of statements, use the START TRANSACTION
statement:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
With START TRANSACTION
, autocommit remains disabled until you end the transaction with COMMIT
or ROLLBACK
. The autocommit mode then reverts to its previous state.
The manual goes on to say:
To disable autocommit mode explicitly, use the following statement:
SET autocommit=0;
After disabling autocommit mode by setting the autocommit
variable to zero, changes to transaction-safe tables (such as those for InnoDB
or NDBCLUSTER
) are not made permanent immediately. You must use COMMIT
to store your changes to disk or ROLLBACK
to ignore the changes.
autocommit
is a session variable and must be set for each session. To disable autocommit mode for each new connection, see the description of the autocommit
system variable at Section 5.1.3, “Server System Variables”.
BEGIN
and BEGIN WORK
are supported as aliases of START TRANSACTION
for initiating a transaction. START TRANSACTION
is standard SQL syntax and is the recommended way to start an ad-hoc transaction.