论坛分类 自动获取数据库自增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

你可能感兴趣的:(数据库)