Skip to content
MySQL

Transactions

Use BEGIN, COMMIT, ROLLBACK, and isolation levels.

#transaction#acid#locking

Code

mysql
-- Start a transaction
START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- Confirm or revert
COMMIT;
-- ROLLBACK;

-- Set isolation level
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

-- Lock rows for update within a transaction
START TRANSACTION;
SELECT balance FROM accounts WHERE id = 1 FOR UPDATE;
-- perform business logic
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
COMMIT;