Добрый день!
Где-то, давно находил функцию postgresql которая проверяет запрос...
т.е. даешь ей как параметр запрос а сама функция возвращает: то ли bool, то ли код исключения (не помню). При этом транзакция не рвется и сам запрос ни на что не влияет.
Уже неделю пытаюсь найти и не получается пожалуйста, напомните как ее зовут?
PS: Это системная функция. И я ее находил в мануале.
PSS: A запрос выглядит в результате:
select ФУНКЦИЯ('select * from table1 where......');
как-то так.
На что проверяет функция
На что проверяет функция запрос?
Есть такая SQL-функция EXISTS, которая проверяет, вернёт ли вложенный запрос хоть какие-нибудь данные, например
SELECT CASE WHEN EXISTS(SELECT * ....) THEN true ELSE false END
Или:
IF EXISTS(SELECT * ....) THEN BEGIN .... END
и т.п. Описание вот тут: http://www.postgresql.org/docs/9.3/static/functions-subquery.html
Функция проверяет саму возможность исполнения запроса.
Функция проверяет саму возможность исполнения запроса.
т.е. если в запросе есть обращение к таблицам, полям на которые нет прав возвращает статус невозможности исполнения.
Или например запрос с ошибкой - туда же.
Как вириант можно предложить
Как вириант можно предложить нечто такое:
TNX
TNX Решение подошло.
Спасибо!!!
Сделал свою функцию которая проверяет запрос.
Только тут есть одна загвоздка, проверка сложного запроса занимает слишком много времени.
А так все пучком.
Еще раз спасибо.
И еще: если запрос на обновление/удаление/вставку - тогда произойдет, в случае удачного теста, изменение данных.
но и это можно обойти savepoint;