Вопрос
Я часто вижу, что в нем указано, что правила следует избегать и использовать триггеры вместо. Я вижу опасность в системе правил, но, конечно, существуют правильные правила использования правил, верно? Что они?
Я спрашиваю об этом из общих интересов; Я не очень приправлен базами данных.
Пример того, что может быть допустимым использованием
Например, в прошлом мне нужно было блокировать определенные данные, поэтому я сделал что-то вроде этого:
CREATE OR REPLACE RULE protect_data AS
ON UPDATE TO exampletable -- another similar rule for DELETE
WHERE OLD.type = 'protected'
DO INSTEAD NOTHING;
Затем, если я хочу отредактировать защищенные данные:
START TRANSACTION;
ALTER TABLE exampletable DISABLE RULE protect_data;
-- edit data as I like
ALTER TABLE exampletable ENABLE RULE protect_data;
COMMIT;
Я согласен, что это хакерство, но я не смог изменить приложение (ы), обращаясь к базе данных в этом случае (или даже выбросив на него ошибки). Итак, бонусные очки для поиска причины, по которой это опасное/недействительное использование системы правил, но не, почему это плохой дизайн.