У меня есть таблица up_files и fgusers3.
триггер должен обновлять fgusers3 после вставки в up_files.
up_file: id, uname, days, d_leave
fgusers3: идентификатор, имя, AnualLeave, cf
У меня есть попытка без оператора if и все работает нормально. каждый раз, когда пользователь вставляет данные, триггер обновляет строку AnualLeave и строку cf в таблице fgusers3.
DROP TRIGGER IF EXISTS `after_insert`;
CREATE DEFINER=`root`@`localhost`
TRIGGER `after_EL` BEFORE INSERT ON `up_files`
FOR EACH ROW
UPDATE fgusers3
SET fgusers3.AnualLeave = fgusers3.AnualLeave - NEW.days + fgusers3.cf,fgusers3.cf = 0
WHERE fgusers3.name = NEW.uname AND NEW.d_leave = 'Emergency Leave'
после того, как я добавлю оператор if else, у меня появится и ошибка. Помогите, пожалуйста, новичок в триггере mysql:
DELIMITER #
CREATE TRIGGER `after_insert` BEFORE INSERT ON `up_files` FOR EACH ROW
BEGIN
UPDATE fgusers3
IF(fgusers3.cf < NEW.days ) THEN
SET fgusers3.AnualLeave = fgusers3.AnualLeave - NEW.days +fgusers3.cf,fgusers3.cf = 0
WHERE fgusers3.name = NEW.uname AND NEW.d_leave = 'Emergency Leave' ;
ELSE
SET fgusers3.cf = fgusers3.cf - NEW.days
WHERE fgusers3.name = NEW.uname AND NEW.d_leave = 'Emergency Leave' ;
END IF ;
END#
DELIMITER ;
Объяснение
Я пытаюсь сделать, если пользователь вставит «Аварийный отпуск», дни вычтут Ежегодный отпуск или перенесут (cf) с прошлого года, если доступно.
если cf available достаточно, чем день, то он будет вычтен из cf,
иначе это будет вычтено из ежегодного отпуска