Introduction
An INSERT trigger runs automatically when new data is added to a table. It helps you check or change data right when it enters the database.
CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW BEGIN -- SQL statements here END;
CREATE TRIGGER log_new_user AFTER INSERT ON users FOR EACH ROW BEGIN INSERT INTO user_log(user_id, action) VALUES (NEW.id, 'added'); END;
CREATE TRIGGER check_price BEFORE INSERT ON orders FOR EACH ROW BEGIN IF NEW.price <= 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Price must be positive'; END IF; END;
CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(50), price DECIMAL(10,2) ); CREATE TABLE product_log ( log_id INT AUTO_INCREMENT PRIMARY KEY, product_id INT, action VARCHAR(20) ); DELIMITER $$ CREATE TRIGGER after_product_insert AFTER INSERT ON products FOR EACH ROW BEGIN INSERT INTO product_log(product_id, action) VALUES (NEW.id, 'inserted'); END$$ DELIMITER ; INSERT INTO products (id, name, price) VALUES (1, 'Pen', 1.20); SELECT * FROM product_log;
INSERT trigger in a database?INSERT trigger in SQL?CREATE TRIGGER trg_log AFTER INSERT ON employees FOR EACH ROW BEGIN INSERT INTO log_table VALUES (NEW.id, NEW.name); END;
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;
INSERT trigger that prevents inserting duplicate email addresses into a users table. Which approach is best?Pass the test and this pattern moves unknown