Вот один из вариантов:
создать таблицу, например,
create table hits (form_name varchar2(30), hits number);
создать хранимую процедуру, которая будет использоваться для поддержания этого Таблица. Это будет процедура автономной транзакции (чтобы вы могли commit
не повлиять на основную транзакцию), и она заблокирует таблицу hits
(повлияет ли она на выполнение в многопользовательской среде? действительно быстрый ).
create or replace procedure p_hits (par_form_name in varchar2)
is
pragma autonomous_transaction;
begin
lock table hits in exclusive mode;
merge into hits h
using (select par_form_name form_name from dual) x
on (x.form_name = h.form_name)
when matched then
update set h.hits = h.hits + 1
when not matched then
insert (form_name, hits) values (par_form_name, 1);
commit;
end p_hits;
/
вызов этой процедуры в WHEN-NEW-FORM-INSTANCE
триггере уровня формы:
p_hits(:system.current_form);
Это было бы все; запросите таблицу hits
, чтобы увидеть ее содержимое.