From 6733da3ec59a390619465e722768e63c5c0bd0ba Mon Sep 17 00:00:00 2001 From: smallkun Date: Thu, 20 Mar 2025 19:11:16 +0800 Subject: [PATCH] Auto commit --- 2207/触发器练习题.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/2207/触发器练习题.md b/2207/触发器练习题.md index 77ae40a..ea36f30 100644 --- a/2207/触发器练习题.md +++ b/2207/触发器练习题.md @@ -128,11 +128,11 @@ BEFORE INSERT ON employee FOR EACH ROW BEGIN - IF NEW.salary < ( + IF NEW.salary > ( SELECT j.max_salary FROM job j WHERE j.job_id = NEW.job_id - ) OR NEW.salary > ( + ) OR NEW.salary < ( SELECT j.min_salary FROM job j WHERE j.job_id = NEW.job_id @@ -153,6 +153,30 @@ VALUES(DEFAULT, '雷昊', 0, NOW(), 1, 1); 创建一个触发器 `after_employee_insert`,在插入 `employee` 表数据之后,自动更新 `department` 表中的部门人数(假设 `department` 表新增一个字段 `employee_count`)。 +```sql +ALTER TABLE department ADD employee_count INT UNSIGNED; + +DELIMITER $$ +DROP TRIGGER IF EXISTS after_employee_insert; +CREATE TRIGGER after_employee_insert +AFTER INSERT ON employee +FOR EACH ROW +BEGIN + UPDATE department d + SET d.employee_count = ( + SELECT COUNT(*) + FROM employee e + WHERE e.dept_id = d.dept_id + ); +END $$ +DELIMITER ; + +INSERT INTO employee +VALUES(DEFAULT, '雷昊', 60000.00, NOW(), 1, 1); +``` + + + #### 练习题 3: 工资变更日志 创建一个触发器 `after_employee_update`,在更新 `employee` 表的 `salary` 字段后,将变更记录插入到一个新的日志表 `salary_log` 中,记录员工 ID、旧工资、新工资和变更时间。