社区
MySQL
帖子详情
为什么TRANSACTION没用啊?
zuing
2005-09-21 10:28:52
表的类型设置成:InnoDB了
start transaction;
delete from table where id=1;
insert table (id,name) values(,,);
rollback
如果第二句错误的话,我以为第一句也不会被执行,但是第一句执行成功了,为什么啊?
...全文
607
5
打赏
收藏
为什么TRANSACTION没用啊?
表的类型设置成:InnoDB了 start transaction; delete from table where id=1; insert table (id,name) values(,,); rollback 如果第二句错误的话,我以为第一句也不会被执行,但是第一句执行成功了,为什么啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zuing
2005-09-22
打赏
举报
回复
解决!
rardge
2005-09-21
打赏
举报
回复
1.说一下你的 MySQL 版本,START TRANSACTION 是 4.0.11 版本以后才有的,之前可以用 BEGIN 。
2.你用 show table status\G 看看表的属性,是否真的已经是InnoDB了。
3.你的理解有误,第一句sql语句是否会对数据表产生实际效果,是靠那句 rollback 或者 commit 的,而不是因为第二句的语法错误。你可以做以下试验:
select * from table_name;
start transaction; //或者 begin;
select * from table_name;
delete from table_name where id = 1;
select * from table_name; //相关数据被删除了;
insert table_name (id,name) values(,,); //mysql 报错
select * from table_name; //应该和上面那个 select 的结果一样;
rollback;
select * from table_name; //恢复到最早那个 select 的状态;
rardge
2005-09-21
打赏
举报
回复
所以我请你先确认你的表是否已经是innodb类型了,如果不是这个表类型,就会发生你说的情况,事务根本不起作用。
还有,你是直接用mysql客户端登录到MySQL服务器后来操作的,还是把这些语句放在脚本中提交执行的?如果是在脚本中,会否是那个错误行使脚本终止,rollback也就执行不到了。不过这个我没测试。
如果以上几点都没有问题,那我就不知道了,呵呵。上面那个例子在我的机器上全部测试通过的。
zuing
2005-09-21
打赏
举报
回复
对,是我的表述有问题,但是,我已经执行了rollback,第一条DELETE已经生效了,我就搞不懂了!
tmdbcd0630
2005-09-21
打赏
举报
回复
路过,学习了。谢谢。
laravel 解决多库下的DB::
tran
sac
t
ion
()事务失效问题
问题:最近使用laravel的DB::
tran
sac
t
ion
()方法进行事务操作时,发现事务总是无效的。代码如下: DB::
tran
sac
t
ion
(funct
ion
() use ($uid, $roleId) { RoomUserRole::insert([ 'uid' => $uid, 'role_id' => $roleId, 'created_at' => LARAVEL_START, 'updated_at' => LARAVEL_START ]); RoomUserRoleLog::insert([ 'uid' => $uid, 'handle_ty
tran
sac
t
ion
缩写为什么是tx_
Tran
sac
t
ion
注解原理
开启事务注解Enable
Tran
sac
t
ion
Management,该注解往容器中导入了导入
Tran
sac
t
ion
ManagementConfigurat
ion
Selector组件。该组件有个方法,在容器刷新的时候会被调用。(此处不讲解为什么会被调用,重点讲解
Tran
sac
t
ion
注解)protected String[] selectImports(AdviceMode adviceMode) ...
使用SQLyog开启事务时事务失效?而Navicat没有失效?
一、问题描述: 在使用SQLyog图形工具操作MySQL时出现事务不生效,即在一个查询编辑器使用了START
TRAN
SAC
T
ION
开启事务然后执行了修改操作而还未用COMMIT提交,在别的查询编辑器就能查询到数据已被修改。 二、实验测试 情况一:用SQLyog不好使,而Navicat好使 在SQLyog的一个查询编辑器里开启事务并修改数据,然后查询,查询出数据已被修改(此时是未提交状态) 在SQLyog中另外打开一个查询编辑器,也查询到数据被修改(开始迷惑了,为什么没使用commit提交,别的查询编辑
SQL之事务
tran
sac
t
ion
什么是事务 事务:同生共死 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit),也就是由多个sql语句组成,必须作为一个整体执行A C I D 这些sql语句作为一个整体一起向系统提交,要么都执行,要么都不执行;事务是对有可能对表数据进行更改操作而言–增删改查,对查询
没用
事务特点:CUID 1.原子性:事务不可以再分,事务必须是原子工作单元;对于其他数据修改,要么全部执行,要么都不执行 2.一致性:事务处理后,数据需要保持某种程度的一致 3.隔离性:每一个事务是独立的,不受其他事务影响 4.
工作日记总结-
tran
sac
t
ion
is aborted, commands ignored until end of
tran
sac
t
ion
block
tran
sac
t
ion
is aborted, commands ignored until end of
tran
sac
t
ion
block 问题解决
MySQL
57,062
社区成员
56,762
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章