小白求帮助。。。。

被窝式覆盖 2012-11-09 10:32:34
银行业务数据库bankdb,其中,帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。怎么建立触发器使转账时候能自动更新transInfo表呢?
create database bankdb

create table bank(
customerName varchar(255),
cardID char(10) primary key,
currentMoney smallmoney
)
create table transInfo(
transDate datetime,
cardID char(10) primary key,
transType char(4),
transMoney smallmoney,
)

insert into bank(customerName,cardID,currentMoney)values('张三','1001 0001',1000.0000)
insert into bank(customerName,cardID,currentMoney)values('李四','1001 0002',1.0000)

create trigger bank_info on bank for update
as
declare @Money1 smallmoney
declare @Money2 smallmoney
declare @M smallmoney
@Money1=(select currentMoney from deleted),
@Money2=(select currentMoney from inserted)

from transInfo,deleted,inserted
if(@Money1>@Money2)
update transInfo
set transType='支出',@M=@Money1-@Money2
if(@Money1<@Money2)
update transInfo
set transType='支入',@M=@Money2-@Money1
update transInfo set transMoney=@M
update transInfo set transDate=(select getdate())
update transInfo set cardID=(select cardID from deleted)

BEGIN TRANSACTION
/*--定义变量,用于累计事务执行过程中的错误--*/
DECLARE @errorSum INT
SET @errorSum=0 --初始化为0,即无错误
/*--转帐:张三的帐户少1000元,李四的帐户多1000元*/
UPDATE bank SET currentMoney=currentMoney-1000
WHERE customerName='张三'
SET @errorSum=@errorSum+@@error
UPDATE bank SET currentMoney=currentMoney+1000
WHERE customerName='李四'
SET @errorSum=@errorSum+@@error --累计是否有错误
IF @errorSum<>0 --如果有错误
BEGIN
print '交易失败,滚回事务'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
print '交易成功,提交事务,写入硬盘,永久的保存'
COMMIT TRANSACTION
END
GO
print '查看转帐事务后的余额'
SELECT * FROM bank
GO
我的触发器好像。。。求帮助
...全文
129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcHerat 2012-11-09
  • 打赏
  • 举报
回复

--table ta tb

update b
set b.totalMoney = b.totalMoney + 
        (case when a.transType when 'out' then -a.setMoney else a.setMoney end)
from ta a join tb b on a.cardID = b.cardID

--这里没有考虑支出金额大于现存金额的问题!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧