博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中的事务
阅读量:5154 次
发布时间:2019-06-13

本文共 1304 字,大约阅读时间需要 4 分钟。

mysql中的事务

1.mysql中的innodb存储引擎才支持事务。

2.事务就是一组sql语句,只要全部的sql语句执行成功,事务才会提交(COMMIT),只要有一条sql语句执行失败,则事务不成功,需要回滚(rolback)。

3.对于事务而言,它需要满足ACID特性,下面就简要的说说事务的ACID特性。

  1)A,表示原子性;原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,整个事务的执行才算成功。事务中任何一个sql语句执行失败,那么已经执行成功的sql语句也必须撤销,数据库状态应该退回到执行事务前的状态;

  2)C,表示一致性;也就是说一致性指事务将数据库从一种状态转变为另一种一致的状态,在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;

  3)I,表示隔离性;隔离性也叫做并发控制、可串行化或者锁。事务的隔离性要求每个读写事务的对象与其它事务的操作对象能相互分离,即该事务提交前对其它事务都不可见,这通常使用锁来实现;

  4)D,持久性,表示事务一旦提交了,其结果就是永久性的,也就是数据就已经写入到数据库了,如果发生了宕机等事故,数据库也能将数据恢复。

4.默认的事务都是开启的 可以通过 set autocommit = 0取消自动提交事务。

5.可以为不同的地方设置回滚点

设置回滚点:save point 保存点名称; 回滚到此:rollback 保存点名称;
 

6.案例

sql文件:

---- 数据库: `test`---- ------------------------------------------------------------ 表的结构 `orders`--CREATE TABLE IF NOT EXISTS `orders` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `num` int(10) unsigned NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;---- 表的结构 `goods`--CREATE TABLE IF NOT EXISTS `goods` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `num` int(10) unsigned NOT NULL COMMENT '商品库存',  PRIMARY KEY (`id`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;---- 转存表中的数据 `goods`--INSERT INTO `goods` (`id`, `num`) VALUES(1, 100);

 

php文件:

 

执行结果如下:

 

      

转载于:https://www.cnblogs.com/bybelief/p/5201728.html

你可能感兴趣的文章
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>
Swift 入门之简单语法(六)
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>