Я написал триггер для автоматического обновления даты в строке таблицы donator после добавления новой строки в мою таблицу donation .Проблема в том, что она не обновляет дату в donator , как я ожидал
Триггер, похоже, работает, если я выполняю вставку вне транзакции.
Воттриггер:
delimiter $$
CREATE TRIGGER updateDate AFTER INSERT ON donation
FOR EACH ROW
UPDATE donator
SET Next_Date = DATE_ADD(NEW.Donation_Date, INTERVAL 3 MONTH)
WHERE id_Donator = NEW.Donator_id_Donator
$$
А вот транзакция:
DELIMITER $$
CREATE PROCEDURE RegisterDonation (in QuantityArg INT, in Donation_DateArg DATE, in Donator_idArg INT)
BEGIN
DECLARE exit handler for SQLEXCEPTION
BEGIN
SHOW ERRORS LIMIT 1;
SHOW WARNINGS;
ROLLBACK;
END;
DECLARE exit handler for SQLWARNING
BEGIN
SHOW ERRORS LIMIT 1;
SHOW WARNINGS;
ROLLBACK;
END;
START TRANSACTION;
set @next_id := ifnull((select max(Donation_id) from donation) + 1, 1);
INSERT INTO donation(Donation_id, Quantity, Donation_Date, Donator_id_Donator) VALUES
(@next_id, QuantityArg, Donation_DateArg, Donator_idArg);
COMMIT;
END
$$
Я знаю, что могу просто обновить дату внутри транзакции, но у меня есть другие триггеры, и это не похоже нахорошее решение просто скопировать вставить код в каждую транзакцию.Есть ли лучший способ сделать это?