Что не так с моим синтаксисом времени при создании этого триггера? - PullRequest
1 голос
/ 05 марта 2020

Это проблема. Создайте триггер с именем 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 ;
...