MySQL триггер устанавливает значения для новой строки и обновляет другую в той же таблице

У меня есть таблица, в которой я отслеживаю сборы за конкретный товар. Эти сборы могут меняться со временем, поэтому у меня есть два столбца (startDate, endDate) с текущим набором сборов, которые всегда имеют endDate в далеком будущем. У меня уже есть триггер, который я использую, чтобы выполнить некоторые вычисления для новой вводимой строки, но я также хочу, чтобы, если я ввожу элемент, у которого уже есть запись, я хочу установить конечную дату предыдущей записи на день перед новой записью startDate и новой endDate до заданной удаленной даты. Вот код для того, что я попробовал первым:

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$

Я получаю ошибку:

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

Ответы на вопрос(4)

Ваш ответ на вопрос