Во-первых, это звучит как ужасная проблема с производительностью. Каждый раз, когда вы выбираете запись, вы должны ее обновлять, если вы отслеживаете выбор с помощью единственного числа, которое просто хранит общее количество выборок, иначе вам нужно вставить временные значения в другую таблицу, чтобы иметь возможность анализировать, когда строки были прочитаны.
Во всяком случае, вы можете сделать это с общим выражением таблицы, в которой вы обновить счетчик в таблице и возвращает результаты основного запроса: http://sqlfiddle.com/#!1/1aa41/6
код что-то вроде:
create table my_table(col1 varchar(30), col2 numeric, select_count numeric);
insert into my_table values ('A',1,0);
insert into my_table values ('B',2,0);
insert into my_table values ('C',3,0);
insert into my_table values ('D',4,0);
insert into my_table values ('E',5,0);
with upd as (
update my_table
set select_count = select_count+1
where col1 = 'A'
returning *)
select *
from upd;
with upd as (
update my_table
set select_count = select_count+1
where col1 = 'B'
returning *)
select *
from upd;
with upd as (
update my_table
set select_count = select_count+1
where col1 = 'A'
returning *)
select *
from upd;
with upd as (
update my_table
set select_count = select_count+1
returning *)
select count(*)
from upd;
with upd as (
update my_table
set select_count = select_count+1
returning *)
select sum(col2)
from upd;
with upd as (
update my_table
set select_count = select_count+1
returning *)
select *
from upd;
Наиболее общие поисковые запросы (или ключевые слова для поиска) или наиболее распространенные результаты? – user2246674
@ user2246674 наиболее распространенные результаты –
Точно, триггер (специальный вид хранимой процедуры) - это то, что вам нужно, и это способ сделать это. –