Данные проверены в некотором условии ...
Все в порядке;но зачем выполнять проверку в триггере POST-QUERY
?Он выбирает данные, которые уже существуют в базе данных, поэтому должно быть действительным.В противном случае, почему вы сохранили его в первую очередь?
POST-QUERY
следует использовать для заполнения элементов не из базы данных.
Проверка должна обрабатываться в триггерах WHEN-VALIDATE-ITEM
или WHEN-VALIDATE-RECORD
не в POST-QUERY
.
Я предлагаю вам разделить эти два действия.Если определенные части кода могут / должны быть разделены между этими двумя типами триггеров, поместите его в процедуру (внутри формы) и при необходимости вызовите ее.
Кстати, POST-QUERY
не сработаетдля всех 20К строк (если вы не буферизуете столько строк, и - если вы делаете - не должны).
Более того, говорят, что функция возвращает результат очень быстро - возможно, если она выполняется для одной строки.Пусть он работает на 200, 2000, 20000 строк как
select your_function(some_parameters)
from that_table
where rownum < 2; --> change 2 to 200 to 2000 to 20000 and see what happens
С другой стороны, какова цель получения 20 000 строк?Кто собирается рассмотреть это?Вы уверены, что именно так вы должны это делать?Если это так, рассмотрите возможность перехода к хранимой процедуре;пусть он выполнит эти проверки в базе данных и позволит форме извлекать «чистые» данные.