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