2
有沒有什麼方法可以從本質上追蹤一行從SQL表中拉出的次數?當選擇一行時增加一個值SQL
例如在我的表我有一個列數。每次SQL語句拉一個特定的行(讓我們稱之爲rowA),rowA的'count'值增加1.
無論是在表中的設置或聲明會很好,但我找不到這樣的事情。
我知道,我可以把它分成兩個語句來達到同樣的事情,但我寧願只發送一個。
有沒有什麼方法可以從本質上追蹤一行從SQL表中拉出的次數?當選擇一行時增加一個值SQL
例如在我的表我有一個列數。每次SQL語句拉一個特定的行(讓我們稱之爲rowA),rowA的'count'值增加1.
無論是在表中的設置或聲明會很好,但我找不到這樣的事情。
我知道,我可以把它分成兩個語句來達到同樣的事情,但我寧願只發送一個。
做到這一點,最好的辦法就是限制表中的讀訪問的存儲過程。
這個存儲過程將採取的各種輸入(過濾選項),以確定所返回的行。
返回的行之前,他們的計數器域遞增。
注意,更新和選擇命令共享相同的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, '%')''不+'進行連結。 – 2013-02-11 00:07:35
謝謝JW,我誤解了SQL Server的問題。 – 2013-02-11 00:08:21
我建議使用觸發器而不是嘗試限制對存儲過程的訪問。這會更可靠。 – 2013-02-11 00:21:20