我正在开发一个员工休假管理系统,并且
我的数据表结构是:
+-----------+---------+----------+----------+------------+--------------+
| EmpID | CL | PL | ISActive | LastUpdate | NextUpdate |
+-----------+---------+----------+----------+------------+--------------+
| E001 | 5 | 3 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E002 | 3 | 7 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E003 | 0 | 1 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E004 | 5 | 1 | 0 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
我希望每个在职员工CL
在每个月的 1日自动获得 2 个,SL
每 45 天自动获得 1 个。有人告诉我可以使用 a 来做到这一点cursor
,但我不知道。
还有其他有效的方法吗?
我不认为游标是解决此问题的好方法,因为它必须 24 / 7 运行并且您需要检查它是否正在运行。更好的解决方案是让 SQL 代理作业在每晚午夜运行。Agent 作业将调用一个存储过程来检查每个员工的
IsActive
标志、LastUpdate
字段和NextUpdate
字段,然后为每个员工递增上述值。存储过程可以在每次运行后发送一封电子邮件,向您显示更新了多少记录。如果由于某种原因出现故障,它还可以包含错误处理以提醒您。这样您就可以确保进程正确运行。
我也同意@James Anderson 的观点,您必须使用 SQL Agent 才能获得更好的结果。
如果您不知道如何设置 SQL 作业,请参阅此链接以供您参考如何设置 SQL 作业。
让 sql 代理中的工作变得更容易。