среда, 7 октября 2015 г.

Как запретить удаление строк из таблицы Postgres

Доброго времени суток. Как-то раз при работе с базой данных  Postgres возникла потребность запретить удаление каких-либо данных из таблицы заказов. Конечно ограничения constraint не позволят это сделать, если есть внешние ключи к другой таблице.  Однако некоторые разработчики баз данных могут не использовать foreign keys, утверждая, что внешние ключи могут замедлять работу с таблицами.

Чтобы запретить коду с правами на удаление из таблицы удаление данных можно использовать 2 метода:

1) Не давать удалять с помощью  триггера
2) Не позволять удалять с помощью правила.

Я выбрал последний вариант, поскольку триггер писать дольше.
Вот пример правила, запрещающего удаление строк из таблицы заказов:


CREATE RULE orders_rl AS ON DELETE TO public.orders
DO INSTEAD NOTHING;

Комментариев нет :

Каталог блогов Blogolist