Mysql事务处理
2015-09-11 17:01
525 查看
Mysql中MyISAM存储引擎不支持事务,InnoDB和BDB支持事务
事务是一组连续的数据库操作,而这组操作是不可分割的,也就是说这组操作要么全执行成功,要不就全部执行失败(实际不执行)。
事务有以下四个标准属性的缩写ACID,通常被称为:
原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。
一致性: 确保数据库正确地改变状态后,成功提交的事务。
隔离性: 使事务操作彼此独立的和透明的。
持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
走一遍:
先新建一个innodb表
操作:
测试一下
事务是一组连续的数据库操作,而这组操作是不可分割的,也就是说这组操作要么全执行成功,要不就全部执行失败(实际不执行)。
事务有以下四个标准属性的缩写ACID,通常被称为:
原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。
一致性: 确保数据库正确地改变状态后,成功提交的事务。
隔离性: 使事务操作彼此独立的和透明的。
持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
走一遍:
先新建一个innodb表
create table test( id int(9) )ENGINE=INNODB;
操作:
begin; insert into test value(1); insert into test value(2); commit;
测试一下
begin; insert into test value(3); select * from test; (此时结果中有3); rollback; select * from test; (此时结果中无3);
相关文章推荐
- mysql参数配置调优详解配置(2)
- mysql file sort
- MySQL 触发器简单实例
- Mysql分库分表方案
- mysql 安装配置的问题
- 解决Mysql导入乱码问题
- MySql中in和exists效率
- 使用innodb_force_recovery解决MySQL崩溃无法重启问题
- Mysql存储过程语法
- 【MySQL】查看MySQL配置文件路径及相关配置
- mac上终端起动MySQL的方法
- Navicat For Mysql快捷键
- Mysql 访问服务器数据库 没有权限 access denied for user
- MySQL Study之--MySQL增加新的表空间(tablespace)
- 一种方便理解的mysql 去重方法
- MySQL日志功能详解查询、慢查询
- 利用mysql和mysqli取得mysql的所有数据库和库中的所有表
- MySQL联合索引实例
- 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法
- mysql主从搭建