DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_remove`(IN vUserFk INT, IN vTimed DATETIME) BEGIN DECLARE vDirectionRemove VARCHAR(6); DECLARE vDirectionPrevious VARCHAR(6); DECLARE vTimedPrevious DATETIME; SELECT direction INTO vDirectionRemove FROM vn.workerTimeControl WHERE userFk = vUserFk AND timed = vTimed ; IF vDirectionRemove = 'out' THEN SELECT timed, direction INTO vTimedPrevious, vDirectionPrevious FROM vn.workerTimeControl WHERE userFk = vUserFk AND timed < vTimed ORDER BY timed DESC LIMIT 1; IF vDirectionPrevious = "middle" THEN UPDATE vn.workerTimeControl SET direction = "out" WHERE userFk = vUserFk AND timed = vTimedPrevious; END IF; ELSE IF vDirectionRemove = 'in' THEN UPDATE vn.workerTimeControl SET direction = "in" WHERE userFk = vUserFk AND timed > vTimed ORDER BY timed ASC LIMIT 1; END IF; END IF; DELETE FROM vn.workerTimeControl WHERE userFk = vUserFk AND timed = vTimed; CALL vn.workerTimeControlSOWP(vUserFk, vTimed); END$$ DELIMITER ;