diff --git a/2207/触发器练习题.md b/2207/触发器练习题.md index 6908d05..e64d47c 100644 --- a/2207/触发器练习题.md +++ b/2207/触发器练习题.md @@ -284,12 +284,32 @@ WHERE e.emp_id = 1; - - #### 练习题 7: 自动计算工龄 创建一个触发器 `before_employee_insert`,在插入 `employee` 表数据时,自动计算员工的工龄(以年为单位),并将其存储到一个新字段 `years_of_service` 中。 +```sql +ALTER TABLE employee ADD years_of_service INT; + +DELIMITER $$ +DROP TRIGGER IF EXISTS before_employee_insert; +CREATE TRIGGER before_employee_insert +BEFORE INSERT ON employee +FOR EACH ROW +BEGIN + SET NEW.years_of_service = TIMESTAMPDIFF(YEAR,NEW.hire_date,NOW()); +END $$ +DELIMITER ; + +SELECT TIMESTAMPDIFF(YEAR,e.hire_date,NOW()) +FROM employee e; + +INSERT INTO employee +VALUES(DEFAULT, '雷昊', 60000.00, '2022-12-31', 1, 1, NULL); +``` + + + #### 练习题 8: 防止删除部门 创建一个触发器 `before_department_delete`,在删除 `department` 表数据之前,检查该部门是否还有员工。如果有员工,阻止删除并抛出错误。