设计理念
1.所有数据存储比对和存储过程全部交给服务器端
2.前端只做数据提交和判断结果
后端SQL数据库存储过程
create table bank
(
userId int identity primary key not null,
userName nvarchar(32) not null,
userMoney int null,
check(userMoney >10)
)
go
insert into bank values ('王大力',1000)
insert into bank values ('鲁冠球',2000)
go
create proc TransMoney--创建一个转账存储过程
@Money int --转账金额
,@userId_out int--转出账户
,@userId_in int--转入账户
,@userName_in nvarchar(32)--转入账户抬头
,@successFlag int output--是否成功标签1成功,0失败
as
begin
begin transaction--开始一个事件
declare @geterror int --捕获错误的变量
--根据id匹配用户名,如果匹配不成功,将@geterror用于最后的事件回滚
select @geterror=(select 匹配=case
when userName=@userName_in then 0
else 1
end
from bank where userId=@userId_in)
--转出账户,
update bank set userMoney=userMoney-@Money where userId=