What Is a Transaction in SQL? – Complete Guide with Examples
Definition: What Is a SQL Transaction?
A transaction in SQL is a sequence of one or more SQL operations (such as INSERT, UPDATE, DELETE) that are executed as a single unit of work. A transaction must be completed successfully in its entirety or rolled back if any part fails.
Transactions ensure data integrity, consistency, and reliability—especially in multi-user and concurrent environments.
ACID Properties of Transactions
Transactions are governed by the ACID principles, which ensure data is processed reliably:
| Property | Description |
|---|---|
| Atomicity | All operations in a transaction succeed or none do |
| Consistency | Data remains in a valid state before and after the transaction |
| Isolation | Transactions do not interfere with each other |
| Durability | Once committed, the changes are permanent, even after a system crash |
SQL Transaction Commands
| Command | Description |
|---|---|
| BEGIN or START TRANSACTION | Begins a new transaction |
| COMMIT | Saves all changes made in the transaction permanently |
| ROLLBACK | Undoes all changes made in the transaction |
| SAVEPOINT | Sets a point within a transaction to roll back to later |
| SET AUTOCOMMIT | Controls if each statement runs in its own transaction |
Basic Transaction Syntax
START TRANSACTION;
-- Your SQL operations
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- Commit if both succeed
If something goes wrong:
ROLLBACK; -- Undo all changes
Real-World Example: Bank Transfer
START TRANSACTION;
UPDATE bank_accounts SET balance = balance - 500 WHERE account_id = 101;
UPDATE bank_accounts SET balance = balance + 500 WHERE account_id = 202;
-- Check for errors here
COMMIT;
If any UPDATE fails, use ROLLBACK to prevent inconsistent account balances.
SAVEPOINT Example
START TRANSACTION;
INSERT INTO orders VALUES (...);
SAVEPOINT before_update;
UPDATE inventory SET stock = stock - 1 WHERE product_id = 5;
-- Oops! Error occurred
ROLLBACK TO before_update;
COMMIT;
Use SAVEPOINT to selectively undo parts of a transaction without discarding everything.
When to Use Transactions
- Transferring money between accounts
- Booking systems (flights, hotels)
- Invoicing or billing systems
- Any operation involving multiple related table updates
SQL Engines That Support Transactions
| Database | Transaction Support |
|---|---|
| MySQL (InnoDB) | Yes |
| PostgreSQL | Yes |
| SQLite | Yes |
| MySQL (MyISAM) | No |