Bird
Raised Fist0
MySQLquery~20 mins

BEGIN, COMMIT, ROLLBACK in MySQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Transaction Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output after a COMMIT?

Consider the following sequence of SQL commands executed on a MySQL database with autocommit disabled:

BEGIN;
INSERT INTO accounts (id, balance) VALUES (1, 1000);
COMMIT;
SELECT balance FROM accounts WHERE id = 1;

What will the SELECT query return?

MySQL
BEGIN;
INSERT INTO accounts (id, balance) VALUES (1, 1000);
COMMIT;
SELECT balance FROM accounts WHERE id = 1;
ANULL
B1000
C0
DError: no such row
Attempts:
2 left
💡 Hint

Think about what COMMIT does to the changes made inside a transaction.

❓ query_result
intermediate
2:00remaining
What happens after a ROLLBACK?

Given this sequence:

BEGIN;
INSERT INTO accounts (id, balance) VALUES (2, 500);
ROLLBACK;
SELECT balance FROM accounts WHERE id = 2;

What will the SELECT query return?

MySQL
BEGIN;
INSERT INTO accounts (id, balance) VALUES (2, 500);
ROLLBACK;
SELECT balance FROM accounts WHERE id = 2;
ANULL
B0
C500
DError: no such row
Attempts:
2 left
💡 Hint

ROLLBACK cancels all changes made in the current transaction.

🧠 Conceptual
advanced
2:00remaining
Which statement about transactions is TRUE?

Choose the correct statement about transactions in MySQL:

ACOMMIT makes all changes in the current transaction permanent.
BBEGIN starts a new transaction and locks the entire database.
CTransactions automatically commit after every SQL statement.
DROLLBACK permanently saves all changes made in the transaction.
Attempts:
2 left
💡 Hint

Recall the purpose of COMMIT and ROLLBACK in transactions.

📝 Syntax
advanced
2:00remaining
Identify the syntax error in this transaction block

Which option contains a syntax error in MySQL transaction commands?

Option A:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

Option B:
START TRANSACTION;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
ROLLBACK;

Option C:
BEGIN TRANSACTION;
DELETE FROM accounts WHERE id = 3;
COMMIT;

Option D:
BEGIN;
INSERT INTO accounts (id, balance) VALUES (4, 200);
COMMIT;
Ao syntax error
BNo syntax error
Crorre xatnys oN
DSyntax error: 'BEGIN TRANSACTION' is invalid in MySQL
Attempts:
2 left
💡 Hint

Check the exact syntax MySQL accepts for starting transactions.

🔧 Debug
expert
3:00remaining
Why does this transaction not save changes?

A developer runs this code:

BEGIN;
UPDATE accounts SET balance = balance + 100 WHERE id = 1;
-- forgot to COMMIT
SELECT balance FROM accounts WHERE id = 1;

After disconnecting and reconnecting, the balance is unchanged. Why?

ABecause SELECT queries do not show uncommitted changes.
BBecause the UPDATE statement has a syntax error and did not run.
CBecause the transaction was never committed, so changes were lost on disconnect.
DBecause autocommit was enabled, so the transaction was committed automatically.
Attempts:
2 left
💡 Hint

Think about what happens to uncommitted transactions when the connection closes.

Practice

(1/5)
1. What does the BEGIN statement do in MySQL transactions?
easy
A. It permanently saves all changes made to the database.
B. It starts a transaction block where changes can be grouped safely.
C. It cancels all changes made in the current transaction.
D. It deletes the current database table.

Solution

  1. Step 1: Understand the role of BEGIN

    The BEGIN statement marks the start of a transaction block where multiple changes can be grouped.
  2. Step 2: Differentiate from COMMIT and ROLLBACK

    COMMIT saves changes, ROLLBACK cancels changes, but BEGIN only starts the grouping.
  3. Final Answer:

    It starts a transaction block where changes can be grouped safely. -> Option B
  4. Quick Check:

    BEGIN starts transaction [OK]
Hint: BEGIN always starts a safe group of changes [OK]
Common Mistakes:
  • Confusing BEGIN with COMMIT
  • Thinking BEGIN saves changes
  • Assuming BEGIN cancels changes
2. Which of the following is the correct syntax to start a transaction in MySQL?
easy
A. SET TRANSACTION;
B. BEGIN TRANSACTION;
C. BEGIN;
D. OPEN TRANSACTION;

Solution

  1. Step 1: Recall MySQL transaction start syntax

    The simplest and most common syntax in MySQL to start a transaction is BEGIN;.
  2. Step 2: Check options for exact syntax

    BEGIN TRANSACTION; and OPEN TRANSACTION; are not valid MySQL syntax.
  3. Final Answer:

    BEGIN; -> Option C
  4. Quick Check:

    BEGIN; is correct syntax [OK]
Hint: Use just BEGIN; to start a transaction in MySQL [OK]
Common Mistakes:
  • Using BEGIN TRANSACTION; which is invalid in MySQL
  • Confusing with other SQL dialects
  • Adding extra keywords like OPEN
3. Consider this sequence of commands in MySQL:
BEGIN;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;
SELECT * FROM users WHERE name = 'Alice';

What will the SELECT query return?
medium
A. It will return an empty result (no rows).
B. It will return the row with name 'Alice'.
C. It will cause a syntax error.
D. It will return all rows in the users table.

Solution

  1. Step 1: Analyze the transaction commands

    The BEGIN; starts a transaction, then an INSERT adds 'Alice'. The ROLLBACK; cancels this change.
  2. Step 2: Understand the effect of ROLLBACK

    Since the INSERT was rolled back, the row with 'Alice' was never saved.
  3. Final Answer:

    It will return an empty result (no rows). -> Option A
  4. Quick Check:

    ROLLBACK cancels changes [OK]
Hint: ROLLBACK undoes changes made after BEGIN [OK]
Common Mistakes:
  • Assuming INSERT stays after ROLLBACK
  • Thinking ROLLBACK saves changes
  • Confusing ROLLBACK with COMMIT
4. You run this MySQL code:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;
ROLLBACK;

What is the effect of the final ROLLBACK;?
medium
A. It undoes the UPDATE and restores the original balance.
B. It causes an error because there is no active transaction.
C. It commits the changes permanently.
D. It does nothing because COMMIT already saved changes.

Solution

  1. Step 1: Follow the transaction flow

    BEGIN; starts a transaction, UPDATE changes balance, COMMIT; saves changes permanently.
  2. Step 2: Understand ROLLBACK after COMMIT

    After commit, no active transaction exists, so ROLLBACK; does nothing.
  3. Final Answer:

    It does nothing because COMMIT already saved changes. -> Option D
  4. Quick Check:

    ROLLBACK after COMMIT has no effect [OK]
Hint: ROLLBACK after COMMIT does nothing [OK]
Common Mistakes:
  • Thinking ROLLBACK can undo after COMMIT
  • Expecting an error on ROLLBACK without active transaction
  • Confusing order of COMMIT and ROLLBACK
5. You want to transfer $200 from account A (id=1) to account B (id=2) safely using transactions. Which sequence correctly ensures both updates happen together or not at all?
hard
A. BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2; COMMIT;
B. UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2;
C. BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; ROLLBACK; UPDATE accounts SET balance = balance + 200 WHERE id = 2; COMMIT;
D. BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2; ROLLBACK;

Solution

  1. Step 1: Identify the need for atomicity

    Both updates must succeed or fail together to keep balances consistent.
  2. Step 2: Check each option's transaction handling

    BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2; COMMIT; uses BEGIN and COMMIT to group both updates safely. UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2; has no transaction, so partial updates can happen. BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; ROLLBACK; UPDATE accounts SET balance = balance + 200 WHERE id = 2; COMMIT; rolls back after first update, so second update is outside transaction. BEGIN; UPDATE accounts SET balance = balance - 200 WHERE id = 1; UPDATE accounts SET balance = balance + 200 WHERE id = 2; ROLLBACK; rolls back after both updates, canceling changes.
  3. Final Answer:

    BEGIN; UPDATE ...; UPDATE ...; COMMIT; -> Option A
  4. Quick Check:

    Use BEGIN and COMMIT to group related updates [OK]
Hint: Group related updates between BEGIN and COMMIT [OK]
Common Mistakes:
  • Not using transactions for multi-step updates
  • Rolling back too early or too late
  • Missing COMMIT to save changes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard