Задача
Решение
Средствами СУБД заблокировать вставку записей, удовлетворяющих некоторому критерию, в определенную таблицу. При этом соотв. INSERT-запросы не должны возвращать ошибок, просто строки не должны вставляться.
Решение
Создаем триггерную функцию, блокирующую вставку записи (блокировка вставки выполняется посредством возврата NULL из триггерной функции):
CREATE OR REPLACE FUNCTION nop()
RETURNS trigger AS
$BODY$
BEGIN
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Теперь вешаем эту функцию как триггер на таблицу, прописывая нужное условие, например, равенство значения определенной колонки определенной строке:
CREATE TRIGGER suppress_tr1code_rowsПрофит!
BEFORE INSERT ON mytable
FOR EACH ROW
WHEN (new.code = 'TR1')
EXECUTE PROCEDURE nop();
Комментариев нет:
Отправить комментарий