2

行が SQL テーブルから何回プルされたかを本質的に追跡する方法はありますか?

たとえば、私のテーブルには列数があります。SQL ステートメントが特定の行をプルするたびに (rowA と呼びましょう)、rowA の「カウント」値が 1 増加します。

テーブルの設定でもステートメントでも問題ありませんが、このようなものは見つかりません。

同じことを達成するためにそれを 2 つのステートメントに分割できることはわかっていますが、1 つだけを送信したいと考えています。

4

1 に答える 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

適切な代替手段は、データ アクセス レイヤーのアプリケーション側で処理することです。

于 2013-02-11T00:05:32.017 に答える