MYSQL局部变量的怪异问题

还在查 2011-12-26 04:06:57

DECLARE fanty int DEFAULT 0;
DECLARE b int DEFAULT 0;

START TRANSACTION;

if 1=a then
set fanty =1;
set b =1;
else
set fanty =2;
set b =2;
end if

insert into s(fanty) values(fanty);

update t set c = c+b where type =fanty;

commit;


多并发执行上面这个存储,现在有个奇怪的问题,得到的结果fantyb不是一一对应的,这个是什么问题,求高手解析
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-12-26
  • 打赏
  • 举报
回复
启用事务再试一下。
wwwwb 2011-12-26
  • 打赏
  • 举报
回复
在替换前LOCK试试
LOCK TABLES t WRITE
update t set c = c+b where type =fanty;
UNLOCK TABLES

还在查 2011-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rucypli 的回复:]

update t set c = b where type =fanty;改成这样试试,以为不知道原始的c的值是多少
[/Quote]
c是一个字段名
还在查 2011-12-26
  • 打赏
  • 举报
回复
innodb 的 REPEATABLE READ锁
rucypli 2011-12-26
  • 打赏
  • 举报
回复
update t set c = b where type =fanty;改成这样试试,以为不知道原始的c的值是多少
iihero 2011-12-26
  • 打赏
  • 举报
回复
用的什么引擎?事务隔离级多少?

56,687

社区成员

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

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