maximw
@maximw

Как отследить вызов пары триггеров при Replace?

При выполнении REPLACE в Mysql фактически делается два действия - удаление строки, если она существует по уникальному ключу, и вставка новой. Соответственно, независимо друг от друга вызываются два триггера After Delete и After Insert.
Существует ли какая-либо возможность отличить внутри процедуры триггера, что он вызван операцией Replace и для него существует "коллега", который уже был или будет вызван? Или хотя бы отличить вызов триггера таким образом от вызовов операциями INSERT и DELETE?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
Вы не можете внутри тела триггера определить, какой инструкций он был вызван - INSERT или REPLACE. Можно попробовать внутри тела триггера записывать флаги в сессионные переменные:
CREATE TRIGGER  after_delete AFTER delete on table FOR EACH ROW BEGIN
	SET @deleteTriggerExecuted = 1;
END;

CREATE TRIGGER  after_insert AFTER INSERT on class FOR EACH ROW BEGIN
	IF @deleteTriggerExecuted = 1 THEN
		-- триггер after_delete был вызван
	END IF;
END;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Москва
До 200 000 ₽
div. Ставрополь
от 50 000 до 120 000 ₽
Lachestry Таганрог
от 170 000 до 200 000 ₽
30 нояб. 2024, в 12:52
30000 руб./за проект
30 нояб. 2024, в 11:32
100 руб./за проект