Как создать триггер в mysql?

Пользователь

от otha_marks , в категории: SQL , 2 года назад

Как создать триггер в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jensen , год назад

@otha_marks 

Чтобы создать триггер в MySQL, вы можете использовать следующую синтаксис:

1
2
3
4
5
6
7
CREATE TRIGGER trigger_name
AFTER/BEFORE INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN
   -- тело триггера
END;


Где:

  • trigger_name - название триггера, которое вы выбираете.
  • AFTER/BEFORE - указывает, что триггер будет выполняться после (AFTER) или перед (BEFORE) событием INSERT, UPDATE или DELETE.
  • INSERT/UPDATE/DELETE - указывает событие, при котором будет выполняться триггер.
  • table_name - название таблицы, на которую назначается триггер.
  • FOR EACH ROW - указывает, что триггер будет выполняться для каждой строки, которая будет затронута событием INSERT, UPDATE или DELETE.
  • BEGIN - начало тела триггера.
  • END - окончание тела триггера.


Пример:

1
2
3
4
5
6
7
8
CREATE TRIGGER update_total_amount
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
   UPDATE customers
   SET total_amount = total_amount + NEW.amount
   WHERE customers.id = NEW.customer_id;
END;


Этот триггер будет выполняться после каждого соб

Пользователь

от greyson , год назад

@otha_marks 

В MySQL триггеры можно создать следующим образом:

1
2
3
4
5
6
7
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN
   -- тело триггера (SQL-операторы)
END;


  • trigger_name - имя триггера.
  • BEFORE/AFTER - указывает, должен ли триггер срабатывать до или после выполнения действия (INSERT, UPDATE, DELETE).
  • ON table_name - указывает, на какую таблицу должен реагировать триггер.
  • FOR EACH ROW - указывает, что триггер должен срабатывать для каждой строки, затронутой действием.
  • BEGIN ... END - тело триггера, внутри которого можно выполнять любые SQL-операторы.