이 작업을 수행하는 가장 좋은 방법은 테이블의 읽기 액세스를 저장 프로 시저로 제한하는 것입니다.
이 저장 프로시 저는 다양한 입력 (필터 옵션)을 사용하여 반환되는 행을 결정합니다.
행이 반환되기 전에 카운터 필드가 증가합니다.
update 및 select 명령은 동일한 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
괜찮은 대안은 데이터 액세스 계층에서 응용 프로그램 측에서 그것을 처리하는 것입니다.
mysql의 경우, 연결을 위해'CONCAT ('%', @pMyParameter, '%')'not'+'를 사용해야합니다. –
감사합니다. JW, 나는 SQL Server라는 질문을 잘못 읽었습니다. –
저장 프로 시저에 대한 액세스를 제한하려고 시도하지 않고 트리거를 제안합니다. 그것은 더 신뢰할 수 있습니다. –