代码拉取完成,页面将自动刷新
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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。