关于MYSQL 隔离级别的问题,在存储过程中插入数据,再对这数据做更新,始终更新不成功。

xunuo230 2017-12-15 10:34:41
代码如下。第5处更新始终更新不成功, 存储过程执行后TEMP_TRANSACTION_ALL表,stock_date_record 表插入的数据都是OK的,就是没做更新,哪位大神帮看看,在线等,已经困扰两天了。
CREATE PROCEDURE stockDateRecordProduct() 
BEGIN

DECLARE cur CURSOR FOR SELECT ... FROM TEMP_TRANSACTION_ALL; -- 0 定义游标

INSERT INTO TEMP_TRANSACTION_ALL (...) -- 1 插入N条事条数据到 TEMP_TRANSACTION_ALL 表
SET i = 0;
WHILE i < 4 DO
INSERT INTO stock_date_record(...)(SELECT...FROM); --2 往 stock_date_record 表中插入一条数据
-- 在此处加COMMIT;也不好用
SELECT count(1) FROM stock_date_record WHERE ... into cntR -- 3 此处查询 stock_date_record 表(上面插入的数据),
select cntR ; -- 始终查不到数据,select cntR 一直为零导致下面游标中UPDATE语句不能执行
OPEN cur;
read_loop: LOOP
-- 提取游标里的数据
FETCH cur INTO V_1.....; -- 4通过游标把 TEMP_TRANSACTION_ALL 表中的数据 放到 V_1 V_2..变量中。

IF done = 0 THEN
LEAVE read_loop;
END IF;

UPDATE stock_date_record SET aaaa= V_1 where ... -- 5 能过游标查询的数据把上面2处的数据做更新
END LOOP;
-- 关闭游标
CLOSE cur;

END WHILE;

END;


这是mysql 查出的隔离级别,
SELECT @@tx_isolation;

"@@tx_isolation"
"REPEATABLE-READ"
...全文
236 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xunuo230 2017-12-16
  • 打赏
  • 举报
回复
引用 2 楼 zjcxc 的回复:
给出表结构和数据
先谢谢了,终于找到问题所在了,不是隔离级别的问题 原因是先插入数据,再通过游标对这条数据更新时,没有按照这个正常顺序执行的,而是先执行了游标对数据更新(数据还没插入)再执行插入数据,所以最终存储过程后感觉就像UPDATE时没有找到数据一样。
xunuo230 2017-12-15
  • 打赏
  • 举报
回复
哪位大神帮帮忙啊
zjcxc 2017-12-15
  • 打赏
  • 举报
回复
给出表结构和数据

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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