2013-02-10 3 views
2

SQL 테이블에서 행이 몇 번 추출되었는지를 기본적으로 추적 할 수있는 방법이 있습니까?행이 선택 될 때 값이 증가합니다 SQL

예를 들어 내 테이블에는 열 개수가 있습니다. SQL 문이 특정 행을 가져올 때마다 (rowA를 호출 할 때), rowA의 'count'값이 1 증가합니다.

테이블의 설정이나 명령문에 아무 문제가 없지만 .

같은 것을 달성하기 위해 두 문장으로 나눌 수 있다는 것을 알고 있지만 하나만 보내고 싶습니다.

답변

2

이 작업을 수행하는 가장 좋은 방법은 테이블의 읽기 액세스를 저장 프로 시저로 제한하는 것입니다.

이 저장 프로시 저는 다양한 입력 (필터 옵션)을 사용하여 반환되는 행을 결정합니다.

행이 반환되기 전에 카운터 필드가 증가합니다.

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 

괜찮은 대안은 데이터 액세스 계층에서 응용 프로그램 측에서 그것을 처리하는 것입니다.

+2

mysql의 경우, 연결을 위해'CONCAT ('%', @pMyParameter, '%')'not'+'를 사용해야합니다. –

+0

감사합니다. JW, 나는 SQL Server라는 질문을 잘못 읽었습니다. –

+0

저장 프로 시저에 대한 액세스를 제한하려고 시도하지 않고 트리거를 제안합니다. 그것은 더 신뢰할 수 있습니다. –

관련 문제