2013-02-10 4 views
2

Есть ли способ существенно отслеживать, сколько раз строка была вытащена из таблицы SQL?Приращение значения при выборе строки SQL

Например, в моей таблице есть счетчик столбцов. Каждый раз, когда оператор SQL вытаскивает определенную строку (позволяет вызывать ее rowA), значение count_ countA увеличивается 1.

Либо в настройках таблицы, либо в инструкции будет хорошо, но я не могу найти что-либо подобное ,

Я знаю, что могу разделить его на два утверждения, чтобы добиться того же, но я бы предпочел только отправить их.

ответ

2

Лучший способ сделать это - ограничить доступ к чтению таблицы хранимой процедуре.

Эта хранимая процедура принимает различные входы (параметры фильтра), чтобы определить, какие строки возвращаются.

Прежде чем возвращать строки, их поле счетчика увеличивается.

Обратите внимание, что обновление и команда выбора имеют одно и то же предложение where.

create procedure Select_From_Table1 
    @pMyParameter varchar(20), -- sample filter parameter 
as 

-- First, update the counter, only on the fields that match our filter 
update MyTable set Counter = Counter + 1 
where 
    MyFilterField like CONCAT('%', @pMyParameter, '%') -- sample filter enforcement 

-- Now, return those rows 
select 
    * 
from 
    MyTable 
where 
    MyFilterField like CONCAT('%', @pMyParameter, '%') -- sample filter enforcement 

Порядочной альтернатива была бы справиться с этим на стороне приложения в вашем слое доступа к данным.

+2

в mysql, вы должны использовать 'CONCAT ('%', @pMyParameter, '%')' не '+' для конкатенации. –

+0

Спасибо JW, я неправильно прочитал вопрос как SQL Server. –

+0

Я предлагаю триггер, а не пытаюсь ограничить доступ к хранимой процедуре. Это было бы более надежно. –

Смежные вопросы