• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL高级十——事务的应用

MySQL高级十——事务的应用

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL高级,事务的应用等相关知识,希望本文的分享对您有所帮助
一、什么是事务

为什么要使用事务这个技术?现在很多软件都是多用户,多课程,多线程的,对于同一个表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念。

1、查看数据库下面是否支持事务(InnoDB支持)?

show engines;

2、查看mysql当前默认的存储引擎?

show variables like '%storage_engine%';

3、查看某张表的存储引擎?

show create table test;

4、对于表的存储结构的修改?

建立InnoDB表:Create table ... type=InnoDB;Alter table table_name type=InnoDB;

二、实例:

1、创建一个数据库bank

create table account(  
aid int not null,  
accname varchar(20) not null,  
accmoney decimal(10,2) not null,  
primary key(aid))engine = innodb default charset = gbk;

2、向account表中插入两条数据

insert into account values(1,'A',4000);  
insert into account values(2,'B',2000);

3、开启表的事务

start transaction;

4、把数据设置为主动提交

commit;  
set autocommit = 0;

5、执行下面一条语句

<pre name="code" class="sql">update account set accmoney = accmoney - 1000 where aid = 1;  
update account set accmoney = accmoney + 1000 where aid = 2;

6、打开新的MySQL命令窗口查看account表

select * from account;

会发现数据并没有发生改变,因为上面修改了指令,数据库并没有发出修改指令;

7、在原有的窗口中查询就会发现数据已经改变

select * from account;

8、进行commit实物提交

commit;

9、在另外的客户端中查看数据就会发现数据已经改变

select * from account;

三、事务回滚和还原点

1、事务的回滚

回到事务发生之前的数据状态。通过rollback。

补充:commit and chain;表示提交事务之后重新开启了新的事务。

rollback and release;表示回滚之后断开和客户的链接。

2、还原点(实例)

set autocommit = 0;  
insert into account values(3,'C',3000);  
savepoint a1;  
insert into account values(4,'D',3000);  
savepoint a2;  
insert into account values(5,'E',3000);  
savepoint a3;

查看数据库信息

就会看到你插入的数据

如果你想回滚到某一状态只需rollback调用一下就行;

如:回到savepoint a1的状态
rollback to savepoint a1;

然后再执行查询语句

就会看到表中就有一条新加的数据。

四、事务总结

事务应该具有4个属性:

原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性的状态。一致性与原子性是密切相关的。

隔离性(isolation):一个事务的执行不能被其他事务干扰,即一个事务内部操作及使用的数据对并发的其他事务隔离的,并发执行的各个事务之间不能相互干扰。

持久性(durability):持久性也成永久性。只一个事务一旦提交,它对数据库中数据的改变就应该是永久性的改变。接下来的其他操作或故障不应该对其有任何影响。

以上就是MySQL高级十——事务的应用的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL高级十七——MySQL账号权限赋予
  • MySQL高级十六——内存优化
  • MySQL高级十五——表的分区
  • MySQL高级十四——表的优化
  • MySQL高级十三——通过索引优化SQL
  • MySQL高级十二——索引
  • MySQL高级十一——慢查询
  • MySQL高级十——事务的应用
  • MySQL高级九——MyISAM表锁(共享读锁)
  • MySQL高级八——触发器的使用

相关文章

  • 2017-05-11Mysql 默认字符集设置方法(免安装版)
  • 2018-12-05mysql如何获取规定时间段内的统计数据的代码详解
  • 2018-12-05Linux上通过binlog文件恢复mysql数据库详细步骤_MySQL
  • 2018-12-05sql数据库批量处理脚本
  • 2017-05-11用SELECT... INTO OUTFILE语句导出MySQL数据的教程
  • 2017-05-11Mysql数据表分区技术PARTITION浅析
  • 2017-05-11Linux系统下查看mysql版本的四种方法
  • 2017-05-11用SQL实现统计报表中的"小计"与"合计"的方法详解
  • 2018-12-05通过mysql导出查询结果到csv方法的讲解
  • 2018-12-05MySQL数据库如何允许远程连接?

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 关于mysql 时间戳格式化函数from_unixtime的使用说明
    • MySQL之终端Terminal(dos界面)管理数据库、数据表、数据的基本操作
    • 卸载VS2011 Developer Preview后Sql Server2008 R2建立数据库关
    • MySQL数据库备份工具Mydumper使用介绍
    • Oracle 数据显示 横表转纵表
    • DBA_2PC_PENDING 介绍_Oracle应用_脚本之家
    • MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究
    • mysqlreport显示Com_中change_db占用比例高的问题的解决方法
    • 解决bash: mysql: command not found 的方法
    • 数据库特性实例用法汇总

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有