博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己写的一个触发器
阅读量:5787 次
发布时间:2019-06-18

本文共 4704 字,大约阅读时间需要 15 分钟。

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')

 

转载于:https://www.cnblogs.com/QMM2008/p/4015416.html

你可能感兴趣的文章
Zilliqa的设计构思 第1部分:网络分片
查看>>
promise原理—一步一步实现一个promise
查看>>
PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
查看>>
一些kindle资源
查看>>
android os FileUriExposedException file storage emulated 0 test tx
查看>>
UITableView长按拖动排序(支持不同行高,不同section间交换)
查看>>
前端基础知识(持续更新中)
查看>>
Python网路请求(GET示例)
查看>>
java 基础之图片的多线程处理和大文件的多线程拷贝
查看>>
老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码
查看>>
系列TCP/IP协议-ARP与RARP
查看>>
Chrome浏览器插件推荐
查看>>
记一次小程序自定义导航栏及加载动画的解决方案
查看>>
金融科技的别样财报:趣店坎坷后回暖、品钛首盈利
查看>>
大 O 表示法
查看>>
Node第一天
查看>>
【开源】多多客发布 3.0.0-alpha.6,Koa+Vue+Taro最佳实践
查看>>
扩展jquery scroll事件,支持 scroll start 和 scroll stop
查看>>
页面搭建工具总结及扩展架构思考
查看>>
如何使用 Qt 开发音视频通话应用
查看>>