0
0
SQLquery~20 mins

DELETE trigger in SQL - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
DELETE Trigger Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Output of DELETE trigger after row deletion

Consider a table Employees with columns id and salary. A DELETE trigger is defined to insert the deleted row's id and salary into a log table DeletedEmployees. What will be the content of DeletedEmployees after deleting the employee with id = 3?

SQL
CREATE TABLE Employees (id INT PRIMARY KEY, salary INT);
CREATE TABLE DeletedEmployees (id INT, salary INT);

CREATE TRIGGER trg_after_delete
AFTER DELETE ON Employees
FOR EACH ROW
INSERT INTO DeletedEmployees (id, salary) VALUES (OLD.id, OLD.salary);

INSERT INTO Employees VALUES (1, 5000), (2, 6000), (3, 7000);

DELETE FROM Employees WHERE id = 3;
A
id | salary
3  | 7000
B
id | salary
1  | 5000
2  | 6000
C
id | salary
3  | NULL
DEmpty table
Attempts:
2 left
💡 Hint

Think about what data the trigger captures when a row is deleted.

🧠 Conceptual
intermediate
1:30remaining
Understanding OLD and NEW in DELETE triggers

In a DELETE trigger, which of the following statements about OLD and NEW references is correct?

ANeither <code>OLD</code> nor <code>NEW</code> are available in DELETE triggers.
B<code>OLD</code> contains the row data before deletion; <code>NEW</code> is not available.
CBoth <code>OLD</code> and <code>NEW</code> contain the row data before deletion.
D<code>NEW</code> contains the row data before deletion; <code>OLD</code> is not available.
Attempts:
2 left
💡 Hint

Think about what data exists after a row is deleted.

📝 Syntax
advanced
2:00remaining
Identify the syntax error in DELETE trigger definition

Which option contains a syntax error in the DELETE trigger definition?

SQL
CREATE TRIGGER trg_del
AFTER DELETE ON Orders
FOR EACH ROW
BEGIN
  INSERT INTO DeletedOrders (order_id) VALUES (OLD.order_id);
END;
ACREATE TRIGGER trg_del AFTER DELETE ON Orders FOR EACH ROW BEGIN INSERT INTO DeletedOrders (order_id) VALUES (OLD.order_id); END
BCREATE TRIGGER trg_del AFTER DELETE ON Orders FOR EACH ROW INSERT INTO DeletedOrders (order_id) VALUES (OLD.order_id);
CCREATE TRIGGER trg_del AFTER DELETE ON Orders FOR EACH ROW BEGIN INSERT INTO DeletedOrders (order_id) VALUES (OLD.order_id); END;
DCREATE TRIGGER trg_del AFTER DELETE ON Orders FOR EACH ROW BEGIN INSERT INTO DeletedOrders (order_id) VALUES (NEW.order_id); END;
Attempts:
2 left
💡 Hint

Check the use of OLD and NEW in DELETE triggers.

optimization
advanced
2:30remaining
Optimizing DELETE trigger for bulk deletes

You have a DELETE trigger that logs deleted rows one by one. Which approach improves performance when deleting many rows at once?

AUse a statement-level trigger to insert all deleted rows in a single batch.
BUse a FOR EACH ROW trigger to insert each deleted row individually.
CDisable the trigger during bulk deletes and manually log rows later.
DAdd a delay in the trigger to reduce server load.
Attempts:
2 left
💡 Hint

Think about how triggers handle multiple rows.

🔧 Debug
expert
3:00remaining
Why does this DELETE trigger cause an infinite loop?

Given the trigger below, deleting a row from Products causes an infinite loop. Why?

CREATE TRIGGER trg_del_product
AFTER DELETE ON Products
FOR EACH ROW
BEGIN
  DELETE FROM Products WHERE id = OLD.id;
END;
AThe trigger tries to delete from a different table causing a deadlock.
BThe trigger uses OLD.id which is not available in AFTER DELETE triggers.
CThe trigger deletes the same row again, causing recursive trigger calls.
DThe trigger syntax is invalid and causes repeated errors.
Attempts:
2 left
💡 Hint

Consider what happens when the trigger deletes rows inside itself.