20220908 Mysql 过程+事务

mysql过程设计(转账业务简单设计)

数据修改前
在这里插入图片描述
设计过程

BEGIN
	
	#定义一个变量用来接收金额是否足够
	DECLARE nowmoney int;
	#定义一个变量存储每次执行的影响行
	DECLARE result int;
	SET result = 0;

	SELECT money into nowmoney from account where id=fromid; 
	#判断金额是否够,够就事务开始,不够就返回“金额不够”
	IF(nowmoney - p_money >=0)THEN
			#事务开始
			START TRANSACTION;
			#转入金额
			UPDATE account set money= money+p_money WHERE id = toid;
			#判断影响行是否为1
			IF(ROW_COUNT()=1)THEN
				SET result = result + 1;
			end if;
			#转出金额
			UPDATE account set money= money-p_money WHERE id = fromid;
			#判断影响行是否为1
			IF(ROW_COUNT()=1)THEN
				SET result = result + 1;
			end if;

			#判断影响行是否为2
			IF(result=2)THEN
				SET flag="转账成功,事务提交";
				#事务提交,结束事务
				COMMIT;
			ELSE
				SET flag="转账失败,事务回滚";
				#事务回滚,结束事务
				ROLLBACK;
			END IF;
			
	ELSE
		SET flag="金额不足";
	END IF;
END

执行过程

call trans(1,2,80,@f);#call是执行
SELECT @f as "result"#select输出

结果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值