MySQL wyzwala ustawione wartości dla nowego wiersza i aktualizuje inny w tej samej tabeli

Mam stół, który śledzę opłaty za konkretny przedmiot. Opłaty te mogą się zmieniać z czasem, więc mam dwie kolumny (startDate, endDate), a aktualny zestaw opłat zawsze ma datę końcową w dalszej przyszłości. Mam już wyzwalacz, którego używam do wykonywania obliczeń w nowym wierszu, który jest wprowadzany, ale chcę też, aby wprowadzić element, który ma już wpis. Chcę ustawić datę końcową poprzedniego wpisu na dzień przed data początkowa nowego wpisu i nowa data końcowa do ustalonej daty odległej. Oto kod, który próbowałem najpierw:

CREATE
DEFINER=`root`@`%`
TRIGGER `im`.`splitBeforeIns`
BEFORE INSERT ON `im`.`split`
FOR EACH ROW
BEGIN
    SET NEW.tcPercent = (NEW.tcOfficeFee / NEW.globalFee) * 100 , NEW.proPercent = 100 - NEW.tcPercent, NEW.endDate = 20501231;
    UPDATE im.split set endDate = ADDDATE(NEW.startDate, -1) where procKey = NEW.procKey AND endDate = 20501231;
END$

Błąd, który otrzymuję to:

ERROR 1442: Can't update table 'split' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

questionAnswers(4)

yourAnswerToTheQuestion