我的数据库有以下架构:
faculty(fid,fname,date of joining, salary, specialisation)
course(cid,cname,credits,semester, department)
teaches(fid,cid)
我想实现以下内容:
每年增加2000名教职员工资,起薪可能是10万。
我在考虑如何实现它,因为它是一个触发器,但这只是在插入时(之前/之后),那么我将如何实现它呢?
请帮忙
答案 0 :(得分:1)
我会使用MySQL事件和计划每天运行它(因为不同的员工可能有不同的加入日期)在您选择的预定义时间使用mysql调度程序(默认情况下不启用,您需要使用它打开它)配置文件中的event_scheduler = ON。
在这种情况下,您可以编写一个简单的更新SQL查询来检查加入日期,如果当前日期大于加入日期+一年,则更新薪水(salary = salary + 2000
)。现在您可能需要另一个日期字段“salary last updated
”,然后在更新查询中,您将检查当前时间戳是否大于上次更新的工资,并且一年后还没有过去。如果无法添加新字段,并且年度增量对于每个人都是一致且相同的,那么您可以查看今年是否已经应用了增量(current salary- base year salary)/increment
,以查看已应用了多少增量当年 - 加入年份。
https://dev.mysql.com/doc/refman/5.7/en/events-overview.html了解有关MySQL预定事件的更多信息。
启用事件计划程序后,您可以添加此类事件
CREATE EVENT `UpdateSalaryEvent`
ON SCHEDULE EVERY 1 DAY STARTS '2017-05-15 03:00:00'
DO BEGIN
-- event body YOUR SALARY UPDATE SQL GOES HERE
END;