@entermix

Почему не срабатывает триггер MYSQL?

Есть следующие таблицы:

users
id, discount, ...
coupons
id, code, ...
discounts
id, user_id, discount, ...


Настроены следующие ограничения:

ALTER TABLE `discounts`
  ADD CONSTRAINT `discounts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;


При удалении записей из таблицы discounts срабатывает триггер:

CREATE TRIGGER `after_delete_discounts` AFTER DELETE ON `discounts`
 FOR EACH ROW BEGIN

	UPDATE `users` SET `discount` = (SELECT SUM(`discount`) FROM `discounts` WHERE `user_id` = `OLD`.`user_id`) WHERE `id` = `OLD`.`user_id` LIMIT 1;
  
END


Если я удаляю запись из таблицы discounts - триггер срабатывает
Если я удаляю запись из таблицы coupons, записи в таблице discounts удаляются, однако триггер не срабатывает.

Почему так?
  • Вопрос задан
  • 297 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Из документации:
Triggers are not activated by foreign key actions.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы