Introduction
A DELETE trigger automatically runs a set of actions when a row is removed from a table. It helps keep data consistent or perform extra tasks without manual work.
CREATE TRIGGER trigger_name BEFORE|AFTER DELETE ON table_name FOR EACH ROW BEGIN -- SQL statements here END;
CREATE TRIGGER before_delete_employee BEFORE DELETE ON employees FOR EACH ROW BEGIN -- actions before deleting an employee END;
CREATE TRIGGER after_delete_order AFTER DELETE ON orders FOR EACH ROW BEGIN INSERT INTO deleted_orders_log(order_id, deleted_at) VALUES (OLD.id, NOW()); END;
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE employee_deletions ( emp_id INT, deleted_on DATETIME ); DELIMITER $$ CREATE TRIGGER after_employee_delete AFTER DELETE ON employees FOR EACH ROW BEGIN INSERT INTO employee_deletions(emp_id, deleted_on) VALUES (OLD.id, NOW()); END$$ DELIMITER ; INSERT INTO employees VALUES (1, 'Alice'), (2, 'Bob'); DELETE FROM employees WHERE id = 1; SELECT * FROM employee_deletions;
CREATE TABLE users (id INT, name VARCHAR(20)); CREATE TRIGGER log_delete AFTER DELETE ON users FOR EACH ROW BEGIN INSERT INTO deleted_log VALUES (OLD.id, OLD.name); END;
DELETE FROM users WHERE id=1; is executed?CREATE TRIGGER trg BEFORE DELETE ON users BEGIN INSERT INTO deleted_log VALUES (OLD.id, OLD.name); END;
orders table if the order status is 'shipped'. Which DELETE trigger logic is correct?Pass the test and this pattern moves unknown