Как эффективно удалить из таблицы A, которая объединена с таблицей B и таблица A имеет триггер после удаления? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть таблица products, таблица category и объединяющая таблица, чтобы связать их, с именем prod_cat_join.Я пытаюсь периодически удалять все категории, не связанные с продуктом, с определенным идентификатором команды.Пусть будет известно, что category имеет триггер, который удаляет все объединения в prod_cat_join, связанные с category после удаления категории.Существует ли один запрос SQL, который может быть вызван для удаления всех категорий, не связанных с продуктом и связанных с конкретным идентификатором группы, без возникновения ошибки функции / триггера?

Триггер работает следующим образом:

CREATE DEFINER=`dbe1`@`%` TRIGGER `db`.`category_AFTER_DELETE` AFTER DELETE ON `category` FOR EACH ROW
BEGIN
delete from prod_cat_join  where prod_cat_join.categoryID = ID;
END

И мой запрос, который периодически вызывается для удаления всех категорий, не связанных с продуктом:

DELETE db.category FROM db.category 
LEFT JOIN db.prod_cat_join AS join_cat 
ON join_cat.categoryID = db.category.ID 
WHERE join_cat.productID IS NULL AND db.category.teamID = '1234'

Я знаю, что можно запросить все категории, не связанные с продуктом, а затем удалитьвозвращенный набор несвязанных категорий.Но это кажется неэффективным, поскольку требует двух запросов.Учитывая нашу текущую настройку, возможно ли обойти триггер для запуска вышеупомянутого запроса?Или есть какой-то другой метод отдельного запроса для удаления несвязанных категорий?И будет ли эффективным использование триггера после удаления в prod_cat_join для удаления всех категорий, которые больше не связаны с объединением?Разве это не в конечном итоге вызовет вышеупомянутый триггер удаления?

Руководство будет оценено, спасибо.

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