论坛分类 自动获取数据库自增ID

 


CREATE PROCEDURE dnt_createpost1
@fid int,
@tid int,
@parentid int,
@layer int,
@poster varchar(20),
@posterid int,
@title nvarchar(60),
@postdatetime char(20),
@message ntext,
@ip varchar(15),
@lastedit varchar(50),
@invisible int,
@usesig int,
@htmlon int,
@smileyoff int,
@bbcodeoff int,
@parseurloff int,
@attachment int,
@rate int,
@ratetimes int

AS


DEClARE @postid int

DELETE FROM [dnt_postid] WHERE DATEDIFF(n, postdatetime, GETDATE()) >5

INSERT INTO [dnt_postid] ([postdatetime]VALUES(GETDATE())

SELECT @postid=SCOPE_IDENTITY()

INSERT INTO [dnt_posts1]([pid][fid][tid][parentid][layer][poster][posterid][title][postdatetime][message][ip][lastedit][invisible][usesig][htmlon][smileyoff][bbcodeoff][parseurloff][attachment][rate][ratetimes]VALUES(@postid@fid@tid@parentid@layer@poster@posterid@title@postdatetime@message@ip@lastedit@invisible@usesig@htmlon@smileyoff@bbcodeoff@parseurloff@attachment@rate@ratetimes)

IF @parentid=0
    
BEGIN
        
        
UPDATE [dnt_posts1] SET [parentid]=@postid WHERE [pid]=@postid
    
END

IF @@ERROR=0
    
BEGIN
        
IF  @invisible = 0
        
BEGIN
        
            
UPDATE [dnt_statistics] SET [totalpost]=[totalpost] + 1
        
        
        
            
DECLARE @fidlist AS VARCHAR(1000)
            
DECLARE @strsql AS VARCHAR(4000)
            
            
SET @fidlist = '';
            
            
SELECT @fidlist = ISNULL([parentidlist],''FROM [dnt_forums] WHERE [fid] = @fid
            
IF RTRIM(@fidlist)<>''
                
BEGIN
                    
SET @fidlist = RTRIM(@fidlist+ ',' + CAST(@fid AS VARCHAR(10))
                
END
            
ELSE
                
BEGIN
                    
SET @fidlist = CAST(@fid AS VARCHAR(10))
                
END
        
            
            
UPDATE [dnt_forums] SET 
                                    
[posts]=[posts] + 1
                                    
[todayposts]=CASE 
                                                    
WHEN DATEDIFF(day[lastpost]GETDATE())=0 THEN [todayposts]*1 + 1 
                                                 
ELSE 1 
                                                 
END,
                                    
[lasttid]=@tid,    
                                    
[lasttitle]=@title,
                                    
[lastpost]=@postdatetime,
                                    
[lastposter]=@poster,
                                    
[lastposterid]=@posterid 
                            
                            
WHERE (CHARINDEX(',' + RTRIM([fid]+ ','',' + (SELECT @fidlist AS [fid]+ ','> 0)
            
            
            
UPDATE [dnt_users] SET
                
[lastpost] = @postdatetime,
                
[lastpostid] = @postid,
                
[lastposttitle] = @title,
                
[posts] = [posts] + 1,
                
[lastactivity] = GETDATE()
            
WHERE [uid] = @posterid
        
        
            
IF @layer<=0
                
BEGIN
                    
UPDATE [dnt_topics] SET [replies]=0,[lastposter]=@poster,[lastpost]=@postdatetime,[lastposterid]=@posterid WHERE [tid]=@tid
                
END
            
ELSE
                
BEGIN
                    
UPDATE [dnt_topics] SET [replies]=[replies] + 1,[lastposter]=@poster,[lastpost]=@postdatetime,[lastposterid]=@posterid WHERE [tid]=@tid
                
END
        
END

        
UPDATE [dnt_topics] SET [lastpostid]=@postid WHERE [tid]=@tid

        
IF @posterid <> -1
        
BEGIN
            
INSERT [dnt_myposts]([uid][tid][pid][dateline]VALUES(@posterid@tid@postid@postdatetime)
        
END
    
END
    
SELECT @postid AS postid

GO

posted on 2008-09-19 14:50  truejob  阅读(588)  评论(0编辑  收藏  举报

导航