An INSERT trigger is a special kind of stored procedure that automatically runs when a new row is added to a table.
Click to reveal answer
beginner
When does an INSERT trigger execute?
It executes immediately after or before a new row is inserted into a table, depending on how the trigger is defined.
Click to reveal answer
intermediate
Can an INSERT trigger modify the data being inserted?
Yes, a BEFORE INSERT trigger can change the data before it is saved, while an AFTER INSERT trigger cannot modify the inserted data but can act on it.
Click to reveal answer
beginner
Give a simple example of an INSERT trigger use case.
A trigger that automatically adds the current date and time to a 'created_at' column whenever a new row is inserted.
Click to reveal answer
intermediate
What happens if an INSERT trigger raises an error?
The insert operation is rolled back, and the new row is not added to the table.
Click to reveal answer
What does an INSERT trigger do?
AUpdates existing rows only
BDeletes rows from a table
CRuns automatically when a new row is added to a table
DCreates a new table
✗ Incorrect
An INSERT trigger runs automatically when a new row is inserted into a table.
When is a BEFORE INSERT trigger executed?
ABefore the row is inserted
BAfter the row is inserted
CWhen a row is deleted
DWhen a table is created
✗ Incorrect
A BEFORE INSERT trigger runs before the new row is saved to the table.
Can an AFTER INSERT trigger modify the inserted data?
AYes, it can change the data before insertion
BNo, it only runs on updates
CYes, it deletes the data
DNo, it cannot modify the inserted data
✗ Incorrect
AFTER INSERT triggers run after data is inserted and cannot change the inserted row.
What happens if an INSERT trigger causes an error?
AThe insert still happens
BThe insert is rolled back and does not happen
CThe trigger is ignored
DThe database shuts down
✗ Incorrect
If a trigger raises an error, the insert operation is canceled and rolled back.
Which of these is a common use for an INSERT trigger?
AAutomatically logging the insert time
BDeleting old rows
CChanging table structure
DBacking up the database
✗ Incorrect
INSERT triggers often add timestamps or log information when new rows are added.
Explain what an INSERT trigger is and when it runs.
Think about what happens automatically when you add a new row.
You got /2 concepts.
Describe a practical example where you might use an INSERT trigger.
Consider adding timestamps or logging new data.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of an INSERT trigger in a database?
easy
A. To update existing rows in a table
B. To automatically run code when a new row is added to a table
C. To delete rows from a table
D. To create a new table
Solution
Step 1: Understand what triggers do
Triggers are special procedures that run automatically in response to certain events in the database.
Step 2: Focus on INSERT triggers
An INSERT trigger specifically runs when a new row is added to a table.
Final Answer:
To automatically run code when a new row is added to a table -> Option B
Quick Check:
INSERT trigger = runs on new row insert [OK]
Hint: INSERT triggers run on new rows added [OK]
Common Mistakes:
Confusing INSERT triggers with UPDATE or DELETE triggers
Thinking triggers create or drop tables
Believing triggers run manually
2. Which of the following is the correct syntax to create an INSERT trigger in SQL?
easy
A. CREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW BEGIN ... END;
B. CREATE TRIGGER trg BEFORE DELETE ON table_name FOR EACH ROW BEGIN ... END;
C. CREATE TRIGGER trg AFTER UPDATE ON table_name FOR EACH ROW BEGIN ... END;
D. CREATE TRIGGER trg ON table_name INSERT BEGIN ... END;
Solution
Step 1: Identify correct event and timing
For an INSERT trigger, the event is INSERT and timing can be BEFORE or AFTER. CREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW BEGIN ... END; uses AFTER INSERT which is valid.
Step 2: Check syntax structure
CREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW BEGIN ... END; uses correct syntax: CREATE TRIGGER name AFTER INSERT ON table FOR EACH ROW BEGIN ... END;
Final Answer:
CREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW BEGIN ... END; -> Option A
Quick Check:
Correct INSERT trigger syntax = CREATE TRIGGER trg AFTER INSERT ON table_name FOR EACH ROW BEGIN ... END; [OK]
Hint: INSERT triggers use AFTER or BEFORE INSERT ON table [OK]
Common Mistakes:
Using DELETE or UPDATE instead of INSERT
Wrong order of keywords
Missing FOR EACH ROW clause
3. Given this trigger code:
CREATE TRIGGER trg_log AFTER INSERT ON employees FOR EACH ROW BEGIN INSERT INTO log_table VALUES (NEW.id, NEW.name); END;
What happens when a new employee row is inserted?
medium
A. A new row is added to log_table with the inserted employee's id and name
B. The employees table is deleted
C. The trigger causes a syntax error
D. Nothing happens because NEW is invalid
Solution
Step 1: Understand the trigger action
The trigger runs AFTER a new row is inserted into employees. It inserts a row into log_table using NEW.id and NEW.name.
Step 2: Confirm NEW usage
NEW refers to the newly inserted row's values, so the insert into log_table uses correct values.
Final Answer:
A new row is added to log_table with the inserted employee's id and name -> Option A
Quick Check:
NEW accesses inserted row data [OK]
Hint: NEW accesses inserted row values inside INSERT triggers [OK]
Common Mistakes:
Thinking NEW is invalid outside triggers
Assuming trigger deletes data
Confusing AFTER and BEFORE timing
4. Identify the error in this trigger:
CREATE TRIGGER trg_check BEFORE INSERT ON orders FOR EACH ROW BEGIN IF NEW.quantity < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Quantity cannot be negative'; END IF; END;
medium
A. Trigger must be AFTER INSERT, not BEFORE INSERT
B. NEW cannot be used in BEFORE INSERT triggers
C. SIGNAL SQLSTATE is invalid syntax
D. Missing delimiter to separate statements inside BEGIN...END
Solution
Step 1: Check trigger syntax for multiple statements
Inside BEGIN...END, multiple statements need delimiters (like semicolons) or the delimiter must be changed before creating the trigger.
Step 2: Confirm other parts are valid
NEW can be used in BEFORE INSERT triggers, SIGNAL SQLSTATE is valid in many SQL dialects, and BEFORE INSERT is allowed.
Final Answer:
Missing delimiter to separate statements inside BEGIN...END -> Option D
Quick Check:
Multiple statements need delimiters [OK]
Hint: Use delimiters inside BEGIN...END blocks [OK]
Common Mistakes:
Forgetting to change delimiter before trigger creation
Misusing NEW in triggers
Confusing BEFORE and AFTER timing rules
5. You want to create an INSERT trigger that prevents inserting duplicate email addresses into a users table. Which approach is best?
hard
A. Use a trigger to insert the duplicate email into a log table
B. Use an AFTER INSERT trigger to delete the row if email is duplicate
C. Use a BEFORE INSERT trigger to check if NEW.email exists and raise an error if yes
D. Use a trigger to update the existing row with the new email
Solution
Step 1: Understand when to prevent duplicates
To stop duplicates before they happen, use a BEFORE INSERT trigger to check if the email already exists.
Step 2: Why other options fail
AFTER INSERT triggers run after insertion, so deleting duplicates after insert is inefficient and can cause issues. Updating existing rows or logging duplicates does not prevent duplicates.
Final Answer:
Use a BEFORE INSERT trigger to check if NEW.email exists and raise an error if yes -> Option C
Quick Check:
Prevent duplicates before insert with BEFORE INSERT trigger [OK]
Hint: Prevent duplicates before insert with BEFORE INSERT trigger [OK]
Common Mistakes:
Trying to fix duplicates after insertion
Using triggers to update instead of prevent
Ignoring unique constraints and relying only on triggers
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.