MySQL Transactions
Managing database transactions
Basic Transaction
START TRANSACTION; # begin transaction
INSERT INTO accounts VALUES (1, 1000);
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT; # save changes
Rollback
START TRANSACTION;
DELETE FROM users WHERE id = 1;
ROLLBACK; # undo changes
Savepoints
START TRANSACTION;
INSERT INTO logs VALUES (1);
SAVEPOINT sp1; # create savepoint
INSERT INTO logs VALUES (2);
ROLLBACK TO SAVEPOINT sp1; # rollback to savepoint
COMMIT;
Isolation Levels
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; # dirty reads
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; # no dirty reads
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; # default
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; # strictest
Autocommit
SET autocommit = 0; # disable autocommit
SET autocommit = 1; # enable autocommit