sql 更新余额的调度程序

sql scheduler to update balance leaves

这是我的学分假table。

creditleaveid   empid   creditleavemonth    creditedleaves
1               21      March                1

我正在使用调度程序将下个月插入到 credit/balance 离开这个 table 是

DELIMITER $$
CREATE EVENT creditleavemonth
ON SCHEDULE EVERY '1' MONTH
STARTS '2017-02-01 00:00:00'
DO 
BEGIN
 CALL spAddCreditLeaves;
END$$

DELIMITER ;

存储过程 spAddCreditLeaves 是

DELIMITER $$

USE `attendance`$$

DROP PROCEDURE IF EXISTS `spAddCreditLeaves`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `spAddCreditLeaves`()
BEGIN
INSERT INTO creditleaves(empid,creditleavemonth)SELECT empid,MONTHNAME(CURDATE())FROM empdetails;
END$$

DELIMITER ;

现在我想通过检查每个员工上个月的记录来更新插入月份的记录。怎么做?

我得到了答案。它工作得很棒。存储过程-

USE `attendance`$$

DROP PROCEDURE IF EXISTS `spAddCreditLeaves`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `spAddCreditLeaves`()
BEGIN
IF MONTHNAME(CURDATE())='January'
THEN
INSERT INTO creditleaves(empid,creditleavemonth,creditmonthyear,creditedleaves) SELECT empid,MONTHNAME(CURDATE()),YEAR(CURDATE()),creditedleaves+1 FROM creditleaves WHERE empid IN (SELECT empid FROM empdetails GROUP BY empid) AND creditedleaves IN(SELECT creditedleaves FROM creditleaves WHERE creditleavemonth=MONTHNAME((CURDATE()-INTERVAL 1 MONTH)) AND creditmonthyear=YEAR((CURDATE()-INTERVAL 1 YEAR)));
ELSE
INSERT INTO creditleaves(empid,creditleavemonth,creditmonthyear,creditedleaves) SELECT empid,MONTHNAME(CURDATE()),YEAR(CURDATE()),creditedleaves+1 FROM creditleaves WHERE empid IN (SELECT empid FROM empdetails GROUP BY empid) AND creditedleaves IN(SELECT creditedleaves FROM creditleaves WHERE creditleavemonth=MONTHNAME((CURDATE()-INTERVAL 1 MONTH)) AND creditmonthyear=YEAR(CURDATE()));
END IF;
END$$

DELIMITER ;