Нет.В MySQL (даже в 8.0) триггеры могут вызываться только для одного типа операции, INSERT
, UPDATE
или DELETE
.Из руководства синтаксис для CREATE TRIGGER
:
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
...
и trigger_event
может быть только один из INSERT
, UPDATE
илиDELETE
:
trigger_event: { INSERT | UPDATE | DELETE }
Поэтому, поскольку нет возможности вызывать триггер для различных операций, нет необходимости иметь условные предикаты, которые вы описываете.
Что вы могли бы сделать вместо этого, поместить код триггера в хранимую процедуру, а затем вызвать его с параметром, который определяет, может ли тип операции, например, для триггера INSERT
, использовать
CREATE TRIGGER db_insert
BEFORE INSERT ON db
FOR EACH ROW
BEGIN
CALL db_trigger_proc('INSERT');
END