Проверка запроса на валидность

Добрый день!

Где-то, давно находил функцию 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

Функция проверяет саму возможность исполнения запроса.

Функция проверяет саму возможность исполнения запроса.
т.е. если в запросе есть обращение к таблицам, полям на которые нет прав возвращает статус невозможности исполнения.
Или например запрос с ошибкой - туда же.

Как вириант можно предложить

Как вириант можно предложить нечто такое:

BEGIN
            INSERT INTO db(a,b) VALUES (KEY, DATA);
            RETURN;
        EXCEPTION WHEN unique_violation THEN
            -- do nothing, and loop to try the UPDATE again
        END;

TNX

TNX Решение подошло.
Спасибо!!!
Сделал свою функцию которая проверяет запрос.
Только тут есть одна загвоздка, проверка сложного запроса занимает слишком много времени. :(
А так все пучком.
Еще раз спасибо.

И еще: если запрос на обновление/удаление/вставку - тогда произойдет, в случае удачного теста, изменение данных.
но и это можно обойти savepoint;

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023