Я написал ниже после триггера вставки, и он не дал мне никакой ошибки.Но всякий раз, когда я пытаюсь вставить данные в sept18.test, я получаю сообщение об ошибке ниже
Код ошибки: 1442. Не удается обновить таблицу 'test' в сохраненной функции / триггере, поскольку она уже используетсяоператор, который вызвал эту сохраненную функцию / триггер.0,000 сек
Может кто-нибудь, пожалуйста, помогите мне с этой ошибкой.Спасибо в аванс.
-- SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME = 'TR_ORDERS_INS'
DROP TRIGGER IF EXISTS TR_ORDERS_INS;
DELIMITER $$
CREATE TRIGGER TR_ORDERS_INS
AFTER INSERT ON sept18.test for each row
BEGIN
DECLARE MAX_DATE1 DATETIME;
IF EXISTS
(
select 1 from ept18.test O
where O.STOREID = NEW.STOREID
AND O.ITEMID = NEW.ITEMID
AND O.ORDERDATE = NEW.ORDERDATE
)
THEN
SET MAX_DATE1 = (SELECT max(DateTimeStamp)
from sept18.test
where itemid = NEW.itemid
and storeid = NEW.storeid
and OrderDate = NEW.orderdate);
INSERT INTO sep18kentest.orders_history
(ORDERID,STOREID,ITEMID,ORDERDATE,QUANTITY,BONUSBUCK,FLATBONUSBUCK,PRICE,STOREPRICE,PRICEOVERRIDE,
PRICEOVERRIDEFLAG,DIRECTSHIPFLAG,FREEITEMFLAG,SRP,DATETIMESTAMP,RECORDNUMBER)
SELECT ORDERID,STOREID,ITEMID,ORDERDATE,QUANTITY,BONUSBUCK,FLATBONUSBUCK,PRICE,STOREPRICE,PRICEOVERRIDE,
PRICEOVERRIDEFLAG,DIRECTSHIPFLAG,FREEITEMFLAG,SRP,DATETIMESTAMP,RECORDNUMBER
FROM sept18.test OD
WHERE OD.storeid = NEW.storeid
and OD.itemid = NEW.itemid
and OD.orderdate = NEW.orderdate
and OD.DateTimeStamp < MAX_DATE1;
DELETE FROM sept18.test
WHERE storeid = NEW.storeid
and itemid = NEW.itemid
and orderdate = NEW.orderdate
and DateTimeStamp < MAX_DATE1;
END IF;
END$$