From 2cafec9ae9d942f32eed27c4a1c8b5ebcf952959 Mon Sep 17 00:00:00 2001 From: smallkun Date: Fri, 21 Mar 2025 08:48:40 +0800 Subject: [PATCH] Auto commit --- 2207/触发器练习题.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/2207/触发器练习题.md b/2207/触发器练习题.md index 03118e8..8beea7c 100644 --- a/2207/触发器练习题.md +++ b/2207/触发器练习题.md @@ -358,6 +358,30 @@ DELIMITER ; 创建一个触发器 `after_employee_update`,在更新 `employee` 表的 `dept_id` 字段后,将变更记录插入到一个新的日志表 `department_change_log` 中,记录员工 ID、旧部门 ID、新部门 ID 和变更时间。 +```sql +CREATE TABLE department_change_log( + emp_id INT, + old_dept_id INT, + new_dept_id INT, + update_date DATE +); + +DELIMITER $$ +DROP TRIGGER IF EXISTS after_employee_update; +CREATE TRIGGER after_employee_update +AFTER UPDATE ON employee +FOR EACH ROW +BEGIN + IF NEW.dept_id <> OLD.dept_id THEN + INSERT INTO department_change_log() + VALUES(NEW.emp_id, OLD.dept_id, NEW.dept_id, NOW()); + END IF; +END $$ +DELIMITER ; +``` + + + #### 练习题 11: 防止插入重复职位 创建一个触发器 `before_job_insert`,在插入 `job` 表数据之前,检查职位名称是否已存在。如果存在,阻止插入并抛出错误。