У меня есть таблица 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
для удаления всех категорий, которые больше не связаны с объединением?Разве это не в конечном итоге вызовет вышеупомянутый триггер удаления?
Руководство будет оценено, спасибо.