웹 사이트에 기사가 있고이 기사에 대한보기 수를 추적하고 싶다고 가정 해 봅니다. 아티클 테이블에는 PK ID - int, Name - nvarchar (50) 및 ViewCount - int가 있습니다. 페이지를 볼 때마다 ViewCount 필드가 증가합니다. 필드를 업데이트 할 때 충돌이 걱정됩니다. 내가 좋아하는 트랜잭션와의 sproc에서 실행할 수 있습니다증분 된 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
나의 두려움은 내가이 모델에서 계산되지 않는 페이지 뷰와 끝까지 갈거야 것입니다. 다른 가능한 솔루션은 로그 유형의 모델로 실제로 기사에 대한보기를 기록하고 기사에 대한 조회수에 대한 데이터를 얻기 위해 함수와보기의 조합을 사용합니다.
아니, 실시간이어야합니다. 이 사이트를 살펴 본다면 조회수가 실시간으로 작동합니다. – Darthg8r
그것은 실시간으로 표시 될 수 있습니다. 즉, _database_ 실시간에는 표시되지 않습니다. 변수는 정적 일 수 있습니다. –
+1 흠, 나쁘지 않습니다. 당신은 내가 asp.net을 사용하고 있다고 가정했다. .. 운 좋게, 나는있다. 모델에서 lock()을 사용하여 정적 해시/캐시 항목을 안전하게 만들 수 있습니다. – Darthg8r