MySQL-Trigger setzen Werte für die Zeile NEW und aktualisieren weitere Werte in derselben Tabelle

Ich habe eine Tabelle, in der ich die Gebühren für einen bestimmten Artikel nachverfolge. Diese Gebühren können sich im Laufe der Zeit ändern, sodass ich zwei Spalten (startDate, endDate) habe, wobei der aktuelle Gebührensatz in ferner Zukunft immer ein EndDate hat. Ich habe bereits einen Auslöser, mit dem ich einige Berechnungen für die neu eingegebene Zeile durchführen kann. Ich möchte jedoch auch, dass ein Element eingegeben wird, das bereits einen Eintrag enthält. Ich möchte das Enddatum des vorherigen Eintrags auf den Tag vor dem festlegen Startdatum des neuen Eintrags und das neue Enddatum auf ein vorbestimmtes entferntes Datum. Hier ist der Code für das, was ich zuerst versucht habe:

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$

Der Fehler, den ich erhalte, ist:

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage