MySQL触发器是一种存储在数据库中的程序,它会在特定的事件(如插入、更新或删除数据)发生时自动执行,触发器可以用于实现数据的完整性约束、审计和自动化任务等。
以下是一个简单的MySQL触发器示例:
1、创建表结构
CREATE TABLE employees ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT NOT NULL, department_id INT NOT NULL );
2、创建部门表结构
CREATE TABLE departments ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, manager_id INT, FOREIGN KEY (manager_id) REFERENCES employees(id) );
3、创建插入触发器
当向employees
表插入数据时,如果新员工的部门ID为NULL,则将该员工分配给部门ID为1的部门。
DELIMITER // CREATE TRIGGER assign_default_department BEFORE INSERT ON employees FOR EACH ROW BEGIN IF NEW.department_id IS NULL THEN SET NEW.department_id = 1; END IF; END; // DELIMITER ;
4、创建更新触发器
当更新employees
表中的数据时,如果员工的部门ID被设置为NULL,则将该员工从部门中移除。
DELIMITER // CREATE TRIGGER remove_from_department AFTER UPDATE ON employees FOR EACH ROW BEGIN IF NEW.department_id IS NULL THEN DELETE FROM departments WHERE id = OLD.department_id; END IF; END; // DELIMITER ;
5、创建删除触发器
当从employees
表中删除数据时,如果员工的部门中没有其他员工,则删除该部门。
DELIMITER // CREATE TRIGGER delete_department_if_empty AFTER DELETE ON employees FOR EACH ROW BEGIN DECLARE department_count INT; SELECT COUNT(*) INTO department_count FROM employees e2 WHERE e2.department_id = OLD.department_id; IF department_count = 0 THEN DELETE FROM departments WHERE id = OLD.department_id; END IF; END; // DELIMITER ;
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。