Всем привет! Пытаюсь сделать каскадное удаление для обеспечения целостности данных, с помощью тригеров...
Везде пишут, что преимущество в том, что при удалении данных из одной таблицы мне не придется заботиться о удалении связанных данных из другой.
Но вот ситуация: есть таблица комментариев в котором флагами "news", "posts", "images" определяется связанный с комментарием модуль. Поэтому я создам 3 триггера так, чтобы при удалении из этих трех таблиц записи, комментарии к ним тоже удалились.
Но если я решу включить комментарии еще к модулю "users", то мне придется вспомнить, что нужно где-то дописать еще один триггер. Конечно, на таком примере это просто, но когда в базе десятки таблиц и между ними десятки связей, то тут появляются проблемы... я ведь могу забыть прописать триггер и целостность данных нарушится.
В таком случае, в чем преимущество? Почему бы мне не дописывать запросы в php и не вспоминать есть ли там у меня такой триггер или нет?
Или, возможно, я что-то не верно понимаю? растолкуйте плз.
При таком подходе конечно нет никакого преимущества. Для вашей задачи подойдет добавлять триггеры через PHP. Т.е. при включении модуля добавляете необходимые триггеры, а при выключении - удаляете их. Да и триггеры работают гораздо быстрее т.е. вы как минимум снимите лишнюю нагрузку.