срабатывание триггера не работает - PullRequest
1 голос
/ 13 мая 2011

У меня четыре таблицы и два триггера.

Table A     tirggerA  , when before delete === > insert deleted data into Tabele AAAAA
Table B     tirggerB  , when before delete === > insert deleted data into Tabele BBBBB

проблема в том, что triggerB работает хорошо при удалении некоторых данных из таблицы B.

Я хочу что-то вроде при удалении данных из таблицы A,

  1. удаленные данные таблицы А, вставленные в таблицу AAAAA
  2. удаленные данные таблицы B (связанные с данными таблицы A) также вставлены в таблицу BBBBB.

Я использую каскадное удаление в связи между таблицей B и таблицей A.

Проблема в том, что TriggerB никогда не срабатывает, когда некоторые данные удаляются в таблице A. На самом деле это должно работать, потому что у меня есть каскадные отношения между этими таблицами. Есть идеи?

1 Ответ

0 голосов
/ 12 октября 2011

Ответ заключается в том, чтобы просто поместить команду delete в триггер для таблицы A.

Также вам нужно поместить код в триггер after delete, в перед удалением, удаление еще не произошло и может быть отменено.

DELIMITER $$

CREATE TRIGGER ad_tableA_each AFTER DELETE ON tableA FOR EACH ROW
BEGIN
  INSERT INTO tableAAAA (f1,f2,f3) VALUES (old.f1, old.f2, old.f3);
  DELETE FROM tableB b WHERE b.a_id = old.id; /*use this instead of foreign key*/
END $$

CREATE TRIGGER ad_tableB_each AFTER DELETE ON tableB FOR EACH ROW
BEGIN
  INSERT INTO tableBBBB (f1,f2,f3) VALUES (old.f1, old.f2, old.f3);
END $$

DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...