のは、私がウェブサイト上の記事を持っている、と私は記事へのビューの数を追跡したいとしましょう。アーティクルテーブルには、PK ID-int、Name-nvarchar(50)、およびViewCount-intがあります。ページが表示されるたびに、私はViewCountフィールドをインクリメントします。私はフィールドを更新するときに衝突が心配です。私の恐怖は、私は、このモデルではカウントされないページビューで終わるつもりだということですに増分DBフィールド
CREATE PROCEDURE IncrementView
(
@ArticleID int
)
as
BEGIN TRANSACTION
UPDATE Article set ViewCount = ViewCount + 1 where ID = @ArticleID
IF @@ERROR <> 0
BEGIN
-- Rollback the transaction
ROLLBACK
-- Raise an error and return
RAISERROR ('Error Incrementing', 16, 1)
RETURN
END
COMMIT
:私は次のようにトランザクションとSPROCでそれを実行することができます。他の可能な解決策は、実際に記事にビューを記録し、記事へのビュー数に関するデータを取得するために関数とビューの組み合わせを使用するモデルのログタイプです。
ナー、リアルタイムになる必要があります。あなたがこのサイトを見ていても、それはビュー数でリアルタイムで動作しています。 – Darthg8r
これは明らかにリアルタイムで表示されることができますが、_database_リアルタイムには表示されません。変数は静的にすることができます。 –
+1うーん、悪くない。私はasp.netを使っていたと思っていました...幸いにも、私は幸いです。あなたのモデルでは、lock()を使ってその静的ハッシュ/キャッシュ項目を安全にすることができます。 – Darthg8r