A transaction in MySQL is a sequence of one or more SQL statements executed as a single unit. Transactions ensure the ACID properties — Atomicity, Consistency, Isolation, Durability.
START TRANSACTION or BEGIN – Starts a new transactionCOMMIT – Saves all changes permanentlyROLLBACK – Undoes changes since last COMMITSAVEPOINT name – Creates a rollback checkpointROLLBACK TO SAVEPOINT name – Rolls back to a specific checkpointSET AUTOCOMMIT = 0 – Disables automatic commit
// Creating table and transferring funds using a transaction
CREATE TABLE accounts (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
balance DECIMAL(10,2)
);
INSERT INTO accounts (name, balance) VALUES
('Alice', 1000.00),
('Bob', 500.00);
START TRANSACTION;
UPDATE accounts SET balance = balance - 200 WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 200 WHERE name = 'Bob';
COMMIT;
ROLLBACK;
READ UNCOMMITTED – Dirty reads allowedREAD COMMITTED – Prevents dirty readsREPEATABLE READ – Prevents non-repeatable reads (MySQL default)SERIALIZABLE – Highest isolation levelCOMMIT or ROLLBACK.SAVEPOINT and ROLLBACK TO for partial undo behavior.