在MYSQL中每年增加一列

时间:2017-05-02 07:28:21

标签: mysql triggers phpmyadmin

我的数据库有以下架构:

faculty(fid,fname,date of joining, salary, specialisation)
course(cid,cname,credits,semester, department)
teaches(fid,cid)

我想实现以下内容:

  

每年增加2000名教职员工资,起薪可能是10万。

我在考虑如何实现它,因为它是一个触发器,但这只是在插入时(之前/之后),那么我将如何实现它呢?

请帮忙

1 个答案:

答案 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;