📖 Scenario: You are managing a small bookstore database. You want to ensure that when a new book is added, the operation is done safely so that if anything goes wrong, the database stays correct.
🎯 Goal: Learn how to start a transaction using BEGIN TRANSACTION in SQL to group multiple operations safely.
📋 What You'll Learn
Create a table named books with columns id (integer primary key) and title (text).
Start a transaction using BEGIN TRANSACTION.
Insert a new book into the books table inside the transaction.
Complete the transaction with a COMMIT statement.
💡 Why This Matters
🌍 Real World
Transactions help keep data safe when multiple changes happen together, like adding new books or updating orders.
💼 Career
Understanding transactions is key for database administrators and developers to ensure data integrity and avoid errors.
Progress0 / 4 steps
1
Create the books table
Write a SQL statement to create a table called books with two columns: id as an integer primary key and title as text.
SQL
Hint
Use CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT); to create the table.
2
Start a transaction
Write a SQL statement to start a transaction using BEGIN TRANSACTION.
SQL
Hint
Use BEGIN TRANSACTION; to start the transaction.
3
Insert a new book inside the transaction
Write a SQL INSERT statement to add a book with id 1 and title 'The Great Gatsby' into the books table inside the transaction.
SQL
Hint
Use INSERT INTO books (id, title) VALUES (1, 'The Great Gatsby'); to add the book.
4
Commit the transaction
Write a SQL statement to complete the transaction using COMMIT.
SQL
Hint
Use COMMIT; to finish the transaction.
Practice
(1/5)
1. What is the main purpose of using BEGIN TRANSACTION in SQL?
easy
A. To permanently delete all data from a table
B. To start a group of database operations that can be saved or undone together
C. To create a new database
D. To display all records from a table
Solution
Step 1: Understand what BEGIN TRANSACTION does
This command starts a transaction, grouping multiple operations so they can be committed or rolled back as one.
Step 2: Compare other options
Deleting data, creating databases, or displaying records are unrelated to starting transactions.
Final Answer:
To start a group of database operations that can be saved or undone together -> Option B
Quick Check:
BEGIN TRANSACTION = start safe group [OK]
Hint: Think of transactions as a safety net for multiple actions [OK]
Common Mistakes:
Confusing transaction start with data deletion
Thinking it creates databases
Assuming it shows data
2. Which of the following is the correct syntax to start a transaction in SQL?
easy
A. BEGIN TRANSACTION;
B. START TRANSACTION;
C. BEGIN;
D. TRANSACTION START;
Solution
Step 1: Recall standard SQL syntax for starting transactions
The correct syntax to start a transaction is BEGIN TRANSACTION;.
Step 2: Check other options for correctness
START TRANSACTION; is valid in some systems but not standard SQL; BEGIN; alone is incomplete; TRANSACTION START; is invalid syntax.
Final Answer:
BEGIN TRANSACTION; -> Option A
Quick Check:
Correct syntax = BEGIN TRANSACTION; [OK]
Hint: Remember: 'BEGIN TRANSACTION;' starts the safe block [OK]
Common Mistakes:
Using incomplete 'BEGIN;' without TRANSACTION
Confusing order of words
Using non-standard phrases
3. Consider this SQL code:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
What is the effect of this transaction?
medium
A. The transaction will cause an error
B. Only the first update is saved
C. Both updates happen together or not at all
D. Updates happen immediately without grouping
Solution
Step 1: Analyze the transaction block
The two updates are inside a transaction started by BEGIN TRANSACTION; and ended by COMMIT;.
Step 2: Understand transaction behavior
Both updates will be saved together if no errors occur; if an error happens, none will be saved.
Final Answer:
Both updates happen together or not at all -> Option C
Quick Check:
Transaction = all or nothing [OK]
Hint: Transactions group changes to save or cancel together [OK]
Common Mistakes:
Thinking updates save separately
Assuming immediate save without commit
Believing transaction causes error here
4. Identify the error in this SQL transaction code:
BEGIN TRANSACTION
INSERT INTO users (name) VALUES ('Alice');
COMMIT;
medium
A. INSERT statement is invalid
B. COMMIT should come before INSERT
C. No error, code is correct
D. Missing semicolon after BEGIN TRANSACTION
Solution
Step 1: Check syntax of each statement
BEGIN TRANSACTION is missing a semicolon at the end, which is required to separate statements.
Step 2: Verify order and validity of other statements
COMMIT; correctly comes after the insert; the insert syntax is valid.
Final Answer:
Missing semicolon after BEGIN TRANSACTION -> Option D
Quick Check:
Semicolon needed after BEGIN TRANSACTION [OK]
Hint: Always end SQL statements with semicolon [OK]
Common Mistakes:
Forgetting semicolon after BEGIN TRANSACTION
Misordering COMMIT and INSERT
Assuming insert syntax is wrong
5. You want to transfer $200 from account A (id=1) to account B (id=2) safely. Which SQL transaction block correctly ensures the transfer is atomic and consistent?
hard
A.
BEGIN TRANSACTION;
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 TRANSACTION;
UPDATE accounts SET balance = balance + 200 WHERE id = 2;
COMMIT;
D.
BEGIN;
UPDATE accounts SET balance = balance - 200 WHERE id = 1;
ROLLBACK;
Solution
Step 1: Understand the need for atomic transfer
Both debit and credit updates must happen together or not at all to keep balances consistent.
Step 2: Evaluate each option
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 200 WHERE id = 1;
UPDATE accounts SET balance = balance + 200 WHERE id = 2;
COMMIT;
uses BEGIN TRANSACTION 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;
lacks transaction, risking partial update.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance + 200 WHERE id = 2;
COMMIT;
only credits without debit.
BEGIN;
UPDATE accounts SET balance = balance - 200 WHERE id = 1;
ROLLBACK;
rolls back, so no change occurs.
Final Answer:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 200 WHERE id = 1;
UPDATE accounts SET balance = balance + 200 WHERE id = 2;
COMMIT;
-> Option A
Quick Check:
Atomic transfer needs BEGIN TRANSACTION + COMMIT [OK]
Hint: Use BEGIN TRANSACTION and COMMIT to group related updates [OK]
Common Mistakes:
Not grouping both updates in a transaction
Forgetting COMMIT to save changes
Rolling back changes unintentionally
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.