1 Star 0 Fork 0

eaglet/carbon-manager

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
交易市场买入存储过程.txt 1.86 KB
一键复制 编辑 原始数据 按行查看 历史
eaglet 提交于 2024-08-30 08:40 . 初始化
CREATE DEFINER=`root`@`localhost` PROCEDURE `TradeBuyOrder`(trade_id int,publish_id int,tradeuser_id int,trade_quantity int,trade_offer DOUBLE,record_log varchar(255),record_hashvalue int)
BEGIN
# 定义买家企业id
DECLARE buy_enter_id int;
# 定义卖家企业id
DECLARE seller_enter_id int;
# 定义sql错误捕获变量
DECLARE error INTEGER DEFAULT 0;
# 当捕获到sql错误时,将error的值设置为1
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION set error=1;
# 开启事务
START TRANSACTION;
# 赋值卖家企业id准备查询
SELECT user_tb.enter_id INTO seller_enter_id FROM user_tb where user_tb.user_id = publish_id;
# 赋值买家企业id
SELECT user_tb.enter_id INTO buy_enter_id FROM user_tb where user_tb.user_id = tradeuser_id;
# 购买成功后,增加卖家余额,减少买家余额
# 卖家增加余额,减少总量和锁定数量
UPDATE enterprise_tb set balance = balance + (trade_quantity * trade_offer),holding_quantity = holding_quantity - trade_quantity,locked_quantity = locked_quantity - trade_quantity where enterprise_tb.enter_id = seller_enter_id;
# 买家减少余额,增加可用数量和总量
UPDATE enterprise_tb set balance = balance - (trade_quantity * trade_offer),holding_quantity = holding_quantity + trade_quantity,available_quantity = available_quantity + trade_quantity where enterprise_tb.enter_id = buy_enter_id;
# 修改订单状态
UPDATE tradeorder_tb set tradeorder_tb.trade_state = 2,tradeorder_tb.sold_time = NOW(),tradeorder_tb.tradeuser_id = tradeuser_id where tradeorder_tb.trade_id = trade_id;
# 添加日志信息
insert INTO trade_record_tb(trade_id,record_log,record_hashvalue)VALUES(trade_id,record_log,record_hashvalue);
-- 判断是否有错误
if error = 1 THEN
ROLLBACK; -- 如果有错误,回滚事务
ELSE
COMMIT; -- 如果没有错误,提交事务
END IF;
SELECT error;
END
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/e4glet/carbon-manager.git
git@gitee.com:e4glet/carbon-manager.git
e4glet
carbon-manager
carbon-manager
master

搜索帮助