1.MySQL 版本

mysql> select version();
+------------+
| version() |
+------------+
| 5.5.37-log |
+------------+
1 row in set (0.00 sec)

2.创建测试表

mysql> create table test_trans(id int ,name_ varchar(10));
Query OK, 0 rows affected (0.29 sec) mysql> show table status like 'test_trans%';
+------------+--------+---------+------------+------+----------------+-------------+-
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |
+------------+--------+---------+------------+------+----------------+-------------+-
| test_trans | InnoDB | 10 | Compact | 0 | 0 | 16384 |
+------------+--------+---------+------------+------+----------------+-------------+-
1 row in set (0.00 sec)

3.测试事物

MySQL通过SET AUTOCOMMIT, START TRANSACTION, COMMIT和ROLLBACK等语句支持本地
事务。
语法:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}

默认情况下,mysql是autocommit的,如果需要通过明确的commit和rollback来提交和
回滚事务,需要通过明确的事务控制命令来开始事务,这是和oracle的事务管理明显不
同的地方。START TRANSACTION或BEGIN语句可以开始一项新的事务。
COMMIT和ROLLBACK用来提交或者回滚事务。

START TRANSACTION或BEGIN语句可以开始一项新的事务。
COMMIT和ROLLBACK用来提交或者回滚事务。
CHAIN和RELEASE子句分别用来定义在事务提交或者回滚之后的操作,chain会立即启动
一个新事物,并且和刚才的事务具有相同的隔离级别,release则会断开和客户端的连接

mysql> begin
-> insert into test_trans values(1,'segment'),(2,'tablespace');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into test_trans values(1,'segment'),(2,'tablespace')' at line 2
mysql> insert into test_trans values (1,'segment'),(2,'tablespace');
Query OK, 2 rows affected (0.21 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test_trans;
+------+------------+
| id | name_ |
+------+------------+
| 1 | segment |
| 2 | tablespace |
+------+------------+
2 rows in set (0.00 sec) mysql> rollback;
Query OK, 0 rows affected (0.00 sec) mysql> select * from test_trans;
+------+------------+
| id | name_ |
+------+------------+
| 1 | segment |
| 2 | tablespace |
+------+------------+
2 rows in set (0.00 sec) a.没有成功,报错了,发现 begin 语句不是这样写的,之后再测试
mysql> truncate table test_trans;
Query OK, 0 rows affected (0.06 sec) mysql> begin ;
Query OK, 0 rows affected (0.00 sec) mysql> insert into test_trans values (1,'segment'),(2,'tablespace');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test_trans;
+------+------------+
| id | name_ |
+------+------------+
| 1 | segment |
| 2 | tablespace |
+------+------------+
2 rows in set (0.00 sec) mysql> rollback;
Query OK, 0 rows affected (0.08 sec) mysql> select * from test_trans;
Empty set (0.00 sec)
mysql> b.测试下 start transaction
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec) mysql> insert into test_trans values (1,'segment'),(2,'tablespace');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test_trans;
+------+------------+
| id | name_ |
+------+------------+
| 1 | segment |
| 2 | tablespace |
+------+------------+
2 rows in set (0.00 sec) mysql> rollback;
Query OK, 0 rows affected (0.07 sec) mysql> select * from test_trans;
Empty set (0.00 sec) mysql>

测试MySQL事务管理的更多相关文章

  1. 10.mysql事务管理及python操作

    在用户操作MySQL过程中,对于一般简单的业务逻辑或中小型程序而言,无需考虑应用MySQL事务.但在比较复杂的情况下,往往用户在执行某些数据操作过程中,需要通过一组SQL语句执行多项并行业务逻辑或程序 ...

  2. MySQL事务管理

    事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组的全部语句,如果其中有任何一条语句因为崩溃或者其他原因无法执行,那么所有 ...

  3. mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚

    mysql的引擎常用的有两个,一个MyISAM,另一个是InnoDB,mysql默认的为MyISAM,而InnoDB才是支持事务的.所以一般需要修改下,如何修改就不说了. 事务需要依赖数据库,好久没使 ...

  4. spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。

    1.根据日志分析,spring junit默认是自动回滚,不对数据库做任何的操作. 18:16:57.648 [main] DEBUG o.s.j.d.DataSourceTransactionMan ...

  5. 使用sftp操作文件并添加事务管理

    本文主要针对文件操作的事务管理,即写文件和删除文件并且能保证事务的一致性,可与数据库联合使用,比如需要在服务器存文件,相应的记录存放在数据库,那么数据库的记录和服务器的文件数一定是要一一对应的,该部分 ...

  6. spring hibernate 事务整合 使用测试类 事务不自动提交的问题!!!

    使用JUnit 测试hibernate 事务管理的时候应注意 ,测试类完成是默认回滚的. 所以只能查询数据库却不能增删改数据库. 应该在测试类上面加上注解 @Rollback(false)  表似默认 ...

  7. 大数据学习day33----spark13-----1.两种方式管理偏移量并将偏移量写入redis 2. MySQL事务的测试 3.利用MySQL事务实现数据统计的ExactlyOnce(sql语句中出现相同key时如何进行累加(此处时出现相同的单词))4 将数据写入kafka

    1.两种方式管理偏移量并将偏移量写入redis (1)第一种:rdd的形式 一般是使用这种直连的方式,但其缺点是没法调用一些更加高级的api,如窗口操作.如果想更加精确的控制偏移量,就使用这种方式 代 ...

  8. MySQL事务及Spring事务管理

    事务,是在数据库中用于保证数据正确性的一种机制,涉及到很多概念以及不同的情况,这里做一个总结 相关概念 事务四特性(ACID) 原子性(Atomicity,或称不可分割性):要么全部完成或者全部不完成 ...

  9. mysql测试spring事务是否生效

    同时对三张表进行插入操作,事务保证完整性.下面进行简单测试: 1. 锁定表 锁定用户表 LOCK TABLES user WRITE; 查看表是否锁定: show ; 显示被锁定的表. 2. 验证在同 ...

随机推荐

  1. Gradle的安装与配置

    Gradle的下载地址:http://gradle.org/gradle-download/ Tips:要先安装JDK并配置其环境变量. 下载完成后将里面的文件解压出来,如下图所示: 添加一个名称为G ...

  2. Qt中使用QProcess备份和恢复Mysql数据库

    分类: Qt2011-02-18 21:35 1395人阅读 评论(3) 收藏 举报 qtmysql数据库windowspathcmd . 使用Qt做MySQL数据库开发,遇到需要备份.还原数据库的问 ...

  3. Mechanism of Loading Resources

    Mechanism of Loading Resources 1. Distributed strategy 1.1. Developer guilde 1.2. Notes 2. Centraliz ...

  4. html5刮刮卡

    通过Canvas实现的可刮涂层效果. 修改img.src时涂层也会自动适应新图片的尺寸. 修改layer函数可更改涂层样式. 涂层: 可刮效果: 以下是HTML源代码(已增加移动设备支持): 1 2 ...

  5. 【排障】tomact未能看到网页

    [排障]tomact未能看到网页 文:食梦貘 这是几个月前的事情了,那时候我在安装xwiki,需要用到tomcat,但是初次安装好时碰上过一个故障: 安装tomcat后,客户机用IE网址上输入:服务端 ...

  6. 关于JFace中的进度条对话框(ProgressMonitorDialog类)

    在Windows操作系统中,最常用的进度条对话框就是文件复制时的弹出框,如果想让用户愉快的使用你开发 的软件,那么在执行某个较长时间的操作时候,就应该弹出一个进度条提示框,告诉用户程序正在做什么. 做 ...

  7. Thinkphp twig

    参考链接:thinkphp的twig模板实现 使用composer安裝好Thinkphp 3.2.3 composer create-project topthink/thinkphp your-pr ...

  8. Android Dialog(对话框)

    一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能. Andro ...

  9. spark处理jsonFile

    按照spark的说法,这里的jsonFile是特殊的文件: Note that the file that is offered as jsonFile is not a typical JSON f ...

  10. procedure的over(partition by ) function

    转载自:http://www.2cto.com/database/201310/249722.html oracle的分析函数over(Partition by...)   Sql代码       o ...