A savepoint is a marker within a transaction that allows you to roll back part of the transaction instead of the whole thing.
Click to reveal answer
beginner
How do you create a savepoint in MySQL?
Use the SQL command SAVEPOINT savepoint_name; to create a savepoint inside a transaction.
Click to reveal answer
intermediate
What happens when you roll back to a savepoint?
Rolling back to a savepoint undoes all changes made after that savepoint but keeps the transaction active.
Click to reveal answer
intermediate
How do you release a savepoint?
Use RELEASE SAVEPOINT savepoint_name; to remove a savepoint. After releasing, you cannot roll back to it.
Click to reveal answer
beginner
Can you use savepoints outside a transaction?
No, savepoints only work inside transactions. You must start a transaction before creating savepoints.
Click to reveal answer
Which command creates a savepoint named 'sp1' in MySQL?
ASTART SAVEPOINT sp1;
BCREATE SAVEPOINT sp1;
CSAVEPOINT sp1;
DSET SAVEPOINT sp1;
✗ Incorrect
The correct syntax to create a savepoint is SAVEPOINT savepoint_name;.
What does ROLLBACK TO SAVEPOINT sp1; do?
ARolls back changes made after savepoint 'sp1'
BCommits the transaction up to 'sp1'
CRolls back the entire transaction
DDeletes the savepoint 'sp1'
✗ Incorrect
It undoes all changes made after the savepoint 'sp1' but keeps the transaction active.
What happens if you try to create a savepoint outside a transaction?
ASavepoint is created successfully
BAn error occurs
CTransaction starts automatically
DSavepoint is ignored
✗ Incorrect
Savepoints require an active transaction; otherwise, MySQL returns an error.
Which command removes a savepoint named 'sp1'?
ARELEASE SAVEPOINT sp1;
BDELETE SAVEPOINT sp1;
CDROP SAVEPOINT sp1;
DREMOVE SAVEPOINT sp1;
✗ Incorrect
The correct command to remove a savepoint is RELEASE SAVEPOINT savepoint_name;.
After rolling back to a savepoint, what is the state of the transaction?
ATransaction is committed
BTransaction is paused
CTransaction is aborted
DTransaction remains active
✗ Incorrect
Rolling back to a savepoint keeps the transaction active for further operations.
Explain what a savepoint is and how it helps in managing transactions.
Think about how you can undo part of your work without losing everything.
You got /3 concepts.
Describe the steps and commands to create, rollback to, and release a savepoint in MySQL.
Remember the order: create, rollback, release.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a SAVEPOINT in MySQL transactions?
easy
A. To start a new transaction automatically
B. To permanently save changes to the database
C. To mark a point in a transaction to which you can roll back later
D. To commit all changes immediately
Solution
Step 1: Understand what a savepoint does
A savepoint marks a specific point inside a transaction to which you can roll back without affecting earlier changes.
Step 2: Differentiate from commit and start
Unlike commit, which saves all changes permanently, savepoints allow partial rollback. It does not start a new transaction.
Final Answer:
To mark a point in a transaction to which you can roll back later -> Option C
Quick Check:
Savepoint = partial rollback marker [OK]
Hint: Savepoints let you undo part of a transaction, not all [OK]
Common Mistakes:
Confusing savepoint with commit
Thinking savepoint starts a new transaction
Assuming savepoint permanently saves changes
2. Which of the following is the correct syntax to create a savepoint named sp1 in MySQL?
easy
A. SAVEPOINT sp1;
B. CREATE SAVEPOINT sp1;
C. SET SAVEPOINT sp1;
D. BEGIN SAVEPOINT sp1;
Solution
Step 1: Recall MySQL savepoint syntax
The correct syntax to create a savepoint is simply SAVEPOINT savepoint_name;.
Step 2: Check other options for correctness
Options B, C, and D use incorrect keywords like CREATE, SET, or BEGIN which are not used for savepoints.
Final Answer:
SAVEPOINT sp1; -> Option A
Quick Check:
Savepoint syntax = SAVEPOINT name; [OK]
Hint: Use just SAVEPOINT plus name to create one [OK]
Common Mistakes:
Adding CREATE or SET before SAVEPOINT
Using BEGIN with SAVEPOINT
Missing semicolon at end
3. Consider this transaction sequence:
START TRANSACTION;
INSERT INTO accounts VALUES (1, 100);
SAVEPOINT sp1;
UPDATE accounts SET balance = 200 WHERE id = 1;
ROLLBACK TO SAVEPOINT sp1;
COMMIT;
What will be the final balance for account with id=1?
medium
A. 100
B. 200
C. 0
D. NULL
Solution
Step 1: Follow the transaction steps
First, a row with balance 100 is inserted. Then a savepoint sp1 is created. Next, balance is updated to 200.
Step 2: Rollback to savepoint sp1
Rolling back to sp1 undoes the update but keeps the insert. So balance returns to 100.
Final Answer:
100 -> Option A
Quick Check:
Rollback to savepoint undoes changes after it [OK]
Hint: Rollback to savepoint undoes later changes only [OK]
Common Mistakes:
Thinking rollback undoes entire transaction
Assuming balance stays 200 after rollback
Confusing commit effects
4. What is wrong with this MySQL transaction code?
START TRANSACTION;
SAVEPOINT sp1;
ROLLBACK TO sp2;
COMMIT;
medium
A. You must commit before creating a savepoint
B. ROLLBACK TO requires a semicolon after savepoint name
C. SAVEPOINT must come after ROLLBACK
D. You cannot rollback to a savepoint that was not created
Solution
Step 1: Check savepoint creation
The code creates savepoint sp1 but tries to rollback to sp2 which does not exist.
Step 2: Understand rollback to savepoint rules
You can only rollback to savepoints that were previously created in the current transaction.
Final Answer:
You cannot rollback to a savepoint that was not created -> Option D
Quick Check:
Rollback to unknown savepoint = error [OK]
Hint: Rollback only to existing savepoints in current transaction [OK]
Common Mistakes:
Trying to rollback to a non-existent savepoint
Misordering savepoint and rollback commands
Assuming semicolon placement causes error
5. You want to update multiple rows in a transaction but be able to undo only the last two updates if needed. Which sequence correctly uses savepoints to achieve this?
hard
A. START TRANSACTION; SAVEPOINT sp1; UPDATE row1; SAVEPOINT sp2; UPDATE row2; UPDATE row3; ROLLBACK TO sp2; COMMIT;
B. START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp1; COMMIT;
C. START TRANSACTION; UPDATE row1; UPDATE row2; SAVEPOINT sp1; UPDATE row3; ROLLBACK TO sp1; COMMIT;
D. START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp2; COMMIT;
Solution
Step 1: Understand the goal
You want to undo only the last two updates, meaning updates to row2 and row3, but keep update to row1.
Step 2: Analyze each option
START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp2; COMMIT;: START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp2; COMMIT; sets sp1 after row1 update, sp2 after row2 update, then updates row3. Rolling back to sp2 undoes only the update to row3, keeping updates to row1 and row2.
Step 3: Re-examine options carefully
START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp1; COMMIT; rolls back to sp1, undoing updates to row2 and row3, which matches the goal of undoing last two updates.
Final Answer:
START TRANSACTION; UPDATE row1; SAVEPOINT sp1; UPDATE row2; SAVEPOINT sp2; UPDATE row3; ROLLBACK TO sp1; COMMIT; -> Option B
Quick Check:
Rollback to earlier savepoint undoes all later changes [OK]
Hint: Rollback to savepoint before last two updates to undo them [OK]
Common Mistakes:
Rolling back to wrong savepoint
Not placing savepoints after each update
Confusing which updates get undone
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.