• 自己写的一个触发器



    ALTER TRIGGER [insertTopic] --发帖前检查金币是否足够,若足够的话,则可以发帖,并且奖励积分
    ON [dbo].[bbsTopic]
    instead of insert
    AS
    BEGIN
    declare @topictype nvarchar(50)
    ,@integralSum int
    ,@goldSum numeric(18,2)
    ,@code nvarchar(50)
    ,@title nvarchar(max)
    ,@Tcontent nvarchar(max)
    ,@uid int
    ,@ucode nvarchar(50)
    ,@ccode nvarchar(50)
    ,@replyCount int
    ,@clickCount int
    ,@Tstate int
    ,@Ttime datetime
    ,@isRecommand bit
    ,@isessential bit
    ,@customSort int
    ,@belongTo int
    ,@ttcode nvarchar(50)
    ,@jieriCode nvarchar(50)
    ,@xuanshangjinbi int
    ,@zhidingTime datetime
    ,@isPingBi bit
    ,@editTime datetime
    ,@insertTopicIdentity int
    ,@insertGoldIdentity int
    ,@insertIntegralIdentity int;
    select @topictype=ttcode from inserted
    select @uid=uid from inserted
    select @integralSum=sum(bbsIntegral) from bbsIntegral where uid=@uid --用户总的积分
    select @goldSum=sum(bbsGold) from bbsGold where uid=@uid --用户总的金币
    SELECT @code=[code]
    ,@title=[title]
    ,@Tcontent=[Tcontent]
    ,@uid=[uid]
    ,@ucode=[ucode]
    ,@ccode=[ccode]
    ,@replyCount=[replyCount]
    ,@clickCount=[clickCount]
    ,@Tstate=[Tstate]
    ,@Ttime=[Ttime]
    ,@isRecommand=[isRecommand]
    ,@isessential=[isessential]
    ,@customSort=[customSort]
    ,@belongTo=[belongTo]
    ,@ttcode=[ttcode]
    ,@jieriCode=[jieriCode]
    ,@xuanshangjinbi=[xuanshangjinbi]
    ,@zhidingTime=[zhidingTime]
    ,@isPingBi=[isPingBi]
    ,@editTime=[editTime]
    FROM inserted
    if(@topictype='普通帖') --发布主题帖一篇支付 - 8金币 +12积分
    begin

    if(@goldSum>=8) --如果金币足够8,那么就可以发帖了
    begin
    insert into bbsTopic values(@code
    ,@title
    ,@Tcontent
    ,@uid
    ,@ucode
    ,@ccode
    ,@replyCount
    ,@clickCount
    ,@Tstate
    ,@Ttime
    ,@isRecommand
    ,@isessential
    ,@customSort
    ,@belongTo
    ,@ttcode
    ,@jieriCode
    ,@xuanshangjinbi
    ,@zhidingTime
    ,@isPingBi
    ,@editTime) select @insertTopicIdentity=@@identity

    INSERT INTO [wts_Community].[dbo].[bbsGold]
    ([uid]
    ,[bbsGold]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,-8
    ,getdate()
    ,'每日发帖') select @insertGoldIdentity=@@identity
    INSERT INTO [wts_Community].[dbo].[bbsIntegral]
    ([uid]
    ,[bbsIntegral]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,12
    ,getdate()
    ,'每日发帖') select @insertIntegralIdentity=@@identity

    if(@insertTopicIdentity!=0 and @insertGoldIdentity!=0 and @insertGoldIdentity!=0)
    begin
    print '您成功发布了一篇普通帖,奖励12积分,扣除8金币'
    end
    else
    begin
    print '发布普通帖失败!'
    end
    end
    else
    begin

    print '金币不够'
    --raisError('金币不够', 16, 1);
    --rollback tran;

    end
    end
    else if(@topictype='主题帖') --发布普通帖一篇支付 - 10金币 +10积分
    begin
    if(@goldSum>=10) --如果金币足够10,那么就可以发帖了
    begin
    insert into bbsTopic values(@code
    ,@title
    ,@Tcontent
    ,@uid
    ,@ucode
    ,@ccode
    ,@replyCount
    ,@clickCount
    ,@Tstate
    ,@Ttime
    ,@isRecommand
    ,@isessential
    ,@customSort
    ,@belongTo
    ,@ttcode
    ,@jieriCode
    ,@xuanshangjinbi
    ,@zhidingTime
    ,@isPingBi
    ,@editTime) select @insertTopicIdentity=@@identity

    INSERT INTO [wts_Community].[dbo].[bbsGold]
    ([uid]
    ,[bbsGold]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,-10
    ,getdate()
    ,'每日发帖') select @insertGoldIdentity=@@identity
    INSERT INTO [wts_Community].[dbo].[bbsIntegral]
    ([uid]
    ,[bbsIntegral]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,10
    ,getdate()
    ,'每日发帖') select @insertIntegralIdentity=@@identity
    if(@insertTopicIdentity!=0 and @insertGoldIdentity!=0 and @insertIntegralIdentity!=0)
    begin
    print '您发布的主题帖成功!奖励10积分,扣除10金币'
    end
    else
    begin
    print '您发布的主题帖失败!'
    end
    end
    else
    begin

    print '金币不够'
    --raisError('金币不够', 16, 1);
    --rollback tran;
    end
    end
    else if(@topictype='提问帖') --发布提问帖一篇支付 - 12金币 +12积分
    begin
    if(@goldSum>=12) --如果金币足够12,那么就可以发帖了
    begin
    insert into bbsTopic values(@code
    ,@title
    ,@Tcontent
    ,@uid
    ,@ucode
    ,@ccode
    ,@replyCount
    ,@clickCount
    ,@Tstate
    ,@Ttime
    ,@isRecommand
    ,@isessential
    ,@customSort
    ,@belongTo
    ,@ttcode
    ,@jieriCode
    ,@xuanshangjinbi
    ,@zhidingTime
    ,@isPingBi
    ,@editTime) select @insertTopicIdentity=@@identity

    INSERT INTO [wts_Community].[dbo].[bbsGold]
    ([uid]
    ,[bbsGold]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,-12
    ,getdate()
    ,'每日发帖') select @insertGoldIdentity=@@identity
    INSERT INTO [wts_Community].[dbo].[bbsIntegral]
    ([uid]
    ,[bbsIntegral]
    ,[datetime]
    ,[itemtype])
    VALUES
    (@uid
    ,12
    ,getdate()
    ,'每日发帖') select @insertIntegralIdentity=@@identity
    if(@insertTopicIdentity!=0 and @insertGoldIdentity!=0 and @insertIntegralIdentity!=0)
    begin
    print '您发布的提问帖成功!奖励12积分,扣除12金币!'
    end
    else
    begin
    print '您发布的提问帖失败!'
    end
    end
    else
    begin

    print '金币不够'
    --raisError('金币不够', 16, 1);
    --rollback tran; 事务在触发器中结束.批处理已中止.
    end
    end


    END

    --测试

    INSERT INTO [wts_Community].[dbo].[bbsTopic]
    ([code]
    ,[title]
    ,[Tcontent]
    ,[uid]
    ,[ucode]
    ,[ccode]
    ,[replyCount]
    ,[clickCount]
    ,[Tstate]
    ,[Ttime]
    ,[isRecommand]
    ,[isessential]
    ,[customSort]
    ,[belongTo]
    ,[ttcode]
    ,[jieriCode]
    ,[xuanshangjinbi]
    ,[zhidingTime]
    ,[isPingBi]
    ,[editTime])
    VALUES
    ('chadao'
    ,'test'
    ,'test'
    ,125
    ,''
    ,'chadao'
    ,0
    ,0
    ,0
    ,'2014/10/9 00:00:00'
    ,0
    ,0
    ,0
    ,0
    ,'提问帖'
    ,''
    ,10
    ,'2014/10/9 00:00:00'
    ,0
    ,'2014/10/9 00:00:00')

    本人博客的文章若有侵犯他人的地方,请告知!若有写的不对的地方,请指正!谢谢!
  • 相关阅读:
    Javascript位运算符
    自定义控件基础2
    Javascript原型链实现继承
    Javascript如何实现水印效果
    CSS详解position(1)
    Javascript对象冒充实现继承
    Javascript节点类型
    实用技巧chm无法搜索
    Javascript定义类或对象
    深入理解JavaScript系列
  • 原文地址:https://www.cnblogs.com/QMM2008/p/4015416.html
Copyright © 2020-2023  润新知