行が SQL テーブルから何回プルされたかを本質的に追跡する方法はありますか?
たとえば、私のテーブルには列数があります。SQL ステートメントが特定の行をプルするたびに (rowA と呼びましょう)、rowA の「カウント」値が 1 増加します。
テーブルの設定でもステートメントでも問題ありませんが、このようなものは見つかりません。
同じことを達成するためにそれを 2 つのステートメントに分割できることはわかっていますが、1 つだけを送信したいと考えています。
これを行う最善の方法は、テーブルの読み取りアクセスをストアド プロシージャに制限することです。
このストアド プロシージャは、さまざまな入力 (フィルター オプション) を使用して、返される行を決定します。
行が返される前に、カウンター フィールドがインクリメントされます。
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
適切な代替手段は、データ アクセス レイヤーのアプリケーション側で処理することです。