📄 cs_system_resetthreadstatistics.prc
字号:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cs_system_ResetThreadStatistics]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cs_system_ResetThreadStatistics]
GO
CREATE PROCEDURE [dbo].cs_system_ResetThreadStatistics
(
@ThreadID int
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
DECLARE @PostID int
DECLARE @UserID int
DECLARE @PostDate datetime
DECLARE @PostAuthor varchar(64)
DECLARE @Subject varchar(256)
DECLARE @SettingsID int
DECLARE @StickyDate datetime
DECLARE @IsSticky bit
-- Select the most recent post in the thread.
SELECT TOP 1
@PostID = PostID,
@UserID = UserID,
@PostDate = PostDate,
@PostAuthor = PostAuthor,
@SettingsID = SettingsID
FROM
cs_Posts
WHERE
ThreadID = @ThreadID
AND IsApproved = 1
ORDER BY
PostID DESC
-- Get sticky date for the thread we need top update
SELECT @StickyDate = StickyDate, @IsSticky = IsSticky FROM cs_Threads WHERE ThreadID = @ThreadID AND SettingsID = @SettingsID
IF @StickyDate < @PostDate
-- Sticky is expired
SET @StickyDate = @PostDate
IF @IsSticky = 0 AND @StickyDate > @PostDate
-- A replying post in this thread has just been deleted
SET @StickyDate = @PostDate
-- Update the thread.
UPDATE
cs_Threads
SET
TotalReplies = (SELECT COUNT(PostID) FROM cs_Posts WHERE ThreadID = @ThreadID AND IsApproved = 1 AND PostLevel > 1 AND SettingsID = @SettingsID),
MostRecentPostAuthorID = @UserID,
MostRecentPostAuthor = @PostAuthor,
MostRecentPostID = @PostID,
ThreadDate = @PostDate,
StickyDate = @StickyDate
WHERE
ThreadID = @ThreadID AND
SettingsID = @SettingsID
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
grant execute on [dbo].[cs_system_ResetThreadStatistics] to public
go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -