mysql事务回滚

mysql使用事务前需确定存储引擎为innodb,譬如删除一个人员数据,会删除和这个人有关的一些数据删除,这个时候就会用到事务,出现一个删除错误整个删除事务就会取消。

事务回滚步骤:

/*创建roll表*/
CREATE TABLE roll(
    id int unsigned primary key auto_increment comment ‘主键‘,
    names varchar(64) not null default ‘‘ comment ‘姓名‘
)CHARSET =UTF8 ENGINE =INNODB;

引擎为INNODB;

/*由于字段太少又插入了一条拥有金额*/

ALTER TABLE roll ADD money float not null default ‘0.0‘ comment ‘拥有金额‘;

/*插入数据*/
INSERT INTO roll VALUES
    (null,‘lily‘,‘1000.8‘),
    (null,‘lucy‘,‘2009.7‘),
    (null,‘liming‘,‘3009‘);

所建表如下:

回滚事务步骤如下:

  首先开始一个事务代码如下:

  做一个保存点a代码如下:

  执行一个删除动作代码如下:

  再次查询表的内容:

  如果感觉执行操作有问题可以选择回滚到a保存点最后查询数据回到最开始状态代码如下:

注意:如果感觉代码没问题可以执行一个commit,执行完毕以后事务无法再回退.

原文地址:https://www.cnblogs.com/lxc-bky/p/9481861.html

时间: 2024-11-05 13:27:57

mysql事务回滚的相关文章

【MySQL】MySQL事务回滚脚本

MySQL自己的 mysqlbinlog | mysql 回滚不好用,自己写个简单脚本试试: 想法是用mysqlbinlog把需要回滚的事务区域从mysql-bin.file中找到,然后通过脚本再插入DB. ## INSERT 需要将新增数据删除 对应DELETE ## DELETE 需要将删除数据恢复 对应INSERT ## UPDATE 需要将修改数据恢复 对应UPDATE ## 手动读取BINLOG,并找到对应位置和对应事务 ## 手动删除除事务外的其他说明语句 INSERT回滚最简单,其

为什么mysql事务回滚后, 自增ID依然自增

事务回滚后,自增ID仍然增加,回滚后,自增ID仍然增加.比如当前ID是7,插入一条数据后,又回滚了.然后你再插入一条数据,此时插入成功,这时候你的ID不是8,而是9.因为虽然你之前插入回滚,但是ID还是自增了. 如果你认为自增ID不应该被事务化,那么其他事务不得不等待着,检查自增ID是被使用还是被回滚,这就导致阻塞. 比如下面的例子,A表使用自增ID. User 1 ------------ begin transaction insert into A ... insert into B ..

MySQL事务回滚后自增键不连续

当在MySQL中使用事务,回滚后 ,会出现先自增id不连续的情况,解决:执行:          ALTER table tableName  AUTO_INCREMENT=1; 在回滚后都重置AUTO_INCREMENT的值. 注意:最好先了解MySQLl事务. 原文地址:https://www.cnblogs.com/donaldworld/p/10267370.html

Mysql数据库无法使用事务回滚

package jdbc02; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.Test; import jdbc02.*; public class TransactionTest { /**  * Tom 给Jerry 汇款500元  *   * 关于事务:  * 1. 如果多个操作,每个操作使用的是自己的单独的连接,则无

MySQL(22):事务管理之 事务回滚

1. 在操作事务的时候,如果发现当前事务操作是不合理的,此时只要还没有提交事务,就可以通过回滚取消当前事务,接下来就针对事务的回滚进行详细讲解. 2. 为了演示回滚操作,在上一个笔记案例基础之上,此时a账户有1000元,b账户也有1000元,开启一个事务,通过update语句将a账户的100元转给b账户,具体语句,如下: start transaction; update account set money=money-100 where name='a'; update account set

JDBC 事务回滚

package jdbcstu; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TransactionTest { public static void main(String[] args) { Connection conn=null; try { conn=getConnectio

ThinkPHP实现事务回滚示例代码

ThinkPHP的事务回滚示例如下: $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可以了,或者第二个也行 $result=$m->where('删除条件')->delete(); $result2=m2->where('删除条件')->delete(); if($result && $result2){ $m->commit();//成功则提交

配置Spring JDBC的事务回滚失效

今天配置Mysql DBCP连接池事务回滚失效,竟然浪费了我一下午的时间去调研,问了好多人也都没发现,最后还得靠自己,总结问题如下: 1.Mysql数据库用的是MyISAM表结构而非InnerDB(浪费了两个小时) 2.网上说的默认情况下,一个有事务方法, 遇到RuntiomeException 时会回滚 . 遇到 受检查的异常 是不会回滚 的. 要想所有异常都回滚,要加上 @Transactional( rollbackFor={Exception.class,其它异常}) . 3.配置DBC

事务和事务回滚

1.定义:一件事从开始发生到结束的整个过程 2.作用:确保数据的一致性 3.事务和事务回滚的应用 1.SQL命令会 autocommit 到数据库执行 2.事务操作 1.开启事务 mysql> begin; | start transactions; mysql> SQL命令... ## 此时autocommit被禁用 ## 2.终止事务 mysql> commit; | rollback; 原文地址:https://www.cnblogs.com/zengsf/p/9588933.ht