我有一个表格,用于记录特定项目的费用。这些费用可能随时间而变化,因此我有两列(startDate、endDate),当前的费用始终具有远期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.
SHOW CREATE TABLE im.split\G
和2)向im.split
插入样例命令。 - RolandoMySQLDBA