mysql 中 rollback 好像不好使

谁学逆向工程 2013-09-08 06:21:05
mysql> select*from student;
+------+------+------+------+
| 姓名 | 语文 | 数学 | 英语 |
+------+------+------+------+
| 张三 | 1 | 1 | 1 |
| 李四 | 2 | 2 | 2 |
+------+------+------+------+
2 rows in set (0.07 sec)

mysql> delete from student where 姓名 ='张三';
Query OK, 1 row affected (0.05 sec)

mysql> select*from student;
+------+------+------+------+
| 姓名 | 语文 | 数学 | 英语 |
+------+------+------+------+
| 李四 | 2 | 2 | 2 |
+------+------+------+------+
1 row in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select*from student;
+------+------+------+------+
| 姓名 | 语文 | 数学 | 英语 |
+------+------+------+------+
| 李四 | 2 | 2 | 2 |
+------+------+------+------+
1 row in set (0.00 sec)
...全文
411 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuandsky 2013-10-28
  • 打赏
  • 举报
回复
引用 3 楼 yaozhiyong110 的回复:
要先 begin; 然后执行sql语句 然后rollback 那begin后面的sql语句才回滚 你都没begin 根本不算是执行事物 rollback没用...
一般都这样写 .BenginTransaction for(...) { sql... .RollbackTransaction } .CommitTransaction
无敌小二傻 2013-10-20
  • 打赏
  • 举报
回复
已经commit掉的sql就不能在rollback了。
davidyu720 2013-09-09
  • 打赏
  • 举报
回复
如果你不使用 SET AUTOCOMMIT=0,MySQL 将会在一个会话中打开自动提交模式。在自动提交模式下,如果一条 SQL 语句没有返回任何错误,MySQL 将在这条 SQL 语句后立即提交。前面的语句已经提交了,ROLLBACK自然就没用了。
yaozhiyong110 2013-09-09
  • 打赏
  • 举报
回复
要先 begin; 然后执行sql语句 然后rollback 那begin后面的sql语句才回滚 你都没begin 根本不算是执行事物 rollback没用...
谁学逆向工程 2013-09-09
  • 打赏
  • 举报
回复
引用 1 楼 hdg3707 的回复:
你得先执行事务才能回滚,它俩是配套的
delete不是执行了吗
hdg3707 2013-09-09
  • 打赏
  • 举报
回复
你得先执行事务才能回滚,它俩是配套的

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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