标题:[求助]触发器的问题
取消只看楼主
NiceGirl
Rank: 2
等 级:新手上路
威 望:4
帖 子:909
专家分:0
注 册:2006-6-18
 问题点数:0 回复次数:1 
[求助]触发器的问题

客户信息表




卡号信息表



交易信息表


创建触发器trig_trans
1。如果交易类型是‘支取’,则应判断余额是否足够支取(余额-支取金额>=1),否则提示余额不足,
如果支取成功,更新余额,减去支取的金额
2。如果是存入,则更新余额,加上存入的金额
3。交易结束后,提示交易信息:是否成功,目前余额是多少

以下是我写的,不知道哪里不对,大侠们请不吝指点
--创建触发器trig_trans
if exists(select * from sysobjects where name='trig_trans')
drop trigger trig_trans
go
create trigger trig_trans on transInfo for insert
as
--定义变量
declare @type char(4)
declare @transMoney money
declare @cardID char(10)
declare @balance money

select @type=transType,@transMoney=transMoney,@cardID=cardID from inserted
select @balance=balance from cardInfo where cardID=@cardID
--根据交易类型是支取/存入,减少或增加帐户表中对应卡号的余额
if (@type='支取') //还有我这里把两个if连起来写可不可以 if (@type='支取' and @balance-@transMoney>=1)
begin
if (@balance-@transMoney>=1)
begin
update cardInfo set balance=balance-@transMoney where cardID=@cardID
print '交易成功,余额为'+convert(varchar(10),(@balance-@transMoney))
end
else
begin
raiserror('交易失败!余额不足!',16,1)
rollback transAction
end
end
else
begin
update cardInfo set balance=balance+@transMoney where cardID=@cardID
print '交易成功,余额为'+convert(varchar(10),(@balance+@transMoney))
end
--测试触发器
insert into transInfo values(default,'1010 3576 1234 5678','支取',1000,null)
insert into transInfo values(default,'1010 3576 1212 1134','存入',200,null)
select * from userInfo
select * from cardInfo
select * from transInfo

[此贴子已经被作者于2006-8-6 14:38:38编辑过]

搜索更多相关主题的帖子: 触发器 余额 支取 金额 trans 
2006-08-06 14:29
NiceGirl
Rank: 2
等 级:新手上路
威 望:4
帖 子:909
专家分:0
注 册:2006-6-18
得分:0 
谢谢楼上的,已经解决了

曾经以为百般艰难,蓦然回首,才发现已飞渡千山。。!
2006-08-06 21:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-82417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.451557 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved