Это проблема. Создайте триггер с именем trg_late_return, который будет записывать правильное значение в DETAIL_DAYSLATE в таблице DETAILRENTAL при каждом возврате видео. Триггер должен выполняться как триггер BEFORE, когда обновляются атрибуты DETAIL_RETURNDATE или DETAIL_DUEDATE. Триггер должен удовлетворять следующим условиям:
Если дата возврата равна нулю, то дни с опозданием также должны быть равны нулю.
Если дата возврата не равна нулю, то дни с опозданием должны определять если видео возвращается с опозданием.
Если датой возврата является полдень дня, следующего за датой исполнения или ранее, то видео не считается поздним, а дни с задержкой должны иметь значение ноль (0) .
Если дата возвращения - более поздний полдень дня после установленной даты, то видео считается запоздалым, поэтому число просроченных дней должно быть рассчитано и сохранено.
Вот мой пока код Это дает мне синтаксическую ошибку, особенно там, где у меня «12: 00: 00». Пожалуйста, помогите мне.
delimiter //
CREATE TRIGGER TRG_LATE_RETURN
BEFORE UPDATE ON DETAILRENTAL
FOR EACH ROW
BEGIN
IF NEW.DETAIL_RETURNDATE IS NULL THEN
SET NEW.DETAIL_DAYSLATE = 0;
END IF;
IF NEW.DETAIL_RETURNDATE IS NOT NULL THEN
IF NEW.DETAIL_RETURNDATE - OLD.DETAIL_DUEDATE > DATE_FORMAT(NEW.DETAIL_RETURNDATE, 'HH24:MI:SS') <= '12:00:00' THEN
SET NEW.DETAIL_DAYSLATE = DATEDIFF(OLD.DETAIL_DUEDATE, NEW.DETAIL_RETURNDATE)*-1;
ELSE
SET NEW.DETAIL_DAYSLATE = 0;
END IF;
END IF;
END;//
delimiter ;