5、创建一个触发器tri_ifmoney,判断涨后的工资是否比涨前的工资高,如果是,则提示“涨薪成功”,并把涨薪情况记录到员工涨薪记录表(e_logs)中;否则保持原工资,并提示“涨后工资低于涨前工资,涨薪失败”。
时间: 2024-12-24 18:38:38 浏览: 5
在数据库设计中,你可以通过创建一个存储过程(Trigger)来实现这个功能。在SQL语言中,假设有一个`employees`表和一个`e_logs`表,我们可以编写如下触发器:
```sql
CREATE TRIGGER tri_ifmoney
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
DECLARE old_salary DECIMAL;
DECLARE new_salary DECIMAL;
IF NEW.salary > OLD.salary THEN
SET old_salary = OLD.salary;
SET new_salary = NEW.salary;
INSERT INTO e_logs (employee_id, action, before_salary, after_salary, result)
VALUES (NEW.id, '涨薪', old_salary, new_salary, '涨薪成功');
SELECT '涨薪成功';
ELSE
SELECT '涨后工资低于涨前工资,涨薪失败';
SET NEW.salary = OLD.salary; -- 如果涨薪失败,恢复原来的工资值
END IF;
END;
```
这个触发器会在`employees`表中的工资字段更新后自动运行。如果新的工资大于旧的,它会将相关信息插入到`e_logs`表,并返回"涨薪成功"消息。如果新工资小于等于旧工资,它会保持原工资不变,并显示"涨薪失败"信息。
阅读全文