什么时候用到事务,用它的好处是什么
时间:2019-09-29 09:28:35 来源:网络 浏览:110
事务是什么东西
事务是一个整体,结果就俩种(成功,失败)要么全部成功(提交),要么全部失败(回滚),就算成功一部分也要(回滚)
什么时候要用到事务
举个例子:
1.把一条数据插入到俩张表的时候,就要用到事务了。
数据是 data 表示。
如果 data在插入第一张表的时候成功了,在插入第二张表的时候失败了,怎么办?
要么保证全部成功(提交),要么就回滚(一条也别成功)。才能保证数据的准确性。
原子性
一致性
隔离性
持续性
好处就是上面的4个特性
原子性:对数据进行操作的时候,要么全都执行,要么全都不执行。
一致性:和原子性是分不开的,事务执行成功,说明全部都执行了,那么就使数据库从一个一致性状态变到另一个一致性状了。
隔离性: 一个事务的执行不能被其他事务干扰
持续性: 事务一旦提交成功,那么数据库里的数据就会永久性的改变。
thinkphp5.1事务操作https://www.kancloud.cn/manual/thinkphp5_1/354035 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 要确保你的数据表引擎为InnoDB,并且开启XA事务支持。
如果数据库引擎是MyISAM的话,也用到事务
Db::startTrans();
try{
$rs = $this->allowField(true)->save($data);
if(false !== $rs){
myFun(1, $this->staffId,$data['staffImg']);
Db::commit();
}
}catch(\Exception $e){
Db::rollback();
}
虽说数据会添加成功,但是事务其实是没起作用的,
假如自定义myFun函数操作出什么问题,职员表staffs依然可以插入数据,而使用事务的目的是如果myFun函数出什么问题,职员表staffs就不插入数据了。当myFun函数没问题,然后执行了Db::rollback();之后,职员表staffs再出现数据,才是正确的。
应该把表的数据库引擎由MyISAM改为InnoDB就可以了
来源网址:https://www.jianshu.com/p/bcfd48c4cbf4
有帮助
(0)
0%
没帮助
(0)
0%
标签:
事务
栏目列表
- PHP(315)
- ThinkPHP(57)
- Mysql(25)
- jQuery(30)
- WampServer(15)
- DIV+CSS(33)
- DedeCMS(31)
- JavaScript(46)
- SQL(26)
- Sublime Text3(10)
- SQLServer(20)
- ASP(42)
- Bootstrap(19)
- IIS(25)
- ThinkPHP5.0(28)
- AmazeUI(5)
- ThinkPHP5.1(88)
- Notepad++(33)
- 正则表达式(7)
- Layui(9)
- HTML标签(11)
- 帝国cms(12)
- Linux(1)
- 其他(156)
点击排行
- 1 thinkPHP5 order多条件排序
- 2 TP 5 如何打开错误以及提示
- 3 AdminLTE管理后台提示框,Bootstrap框架提示框Tooltip
- 4 Navicat for Mysql 如何备份数据库psc格式
- 5 根据身份证号和社会保险号码查询不出您的社保信息,请核实后重新填写
- 6 tp5里面命名空间app修改
- 7 当前处理器类型不支持此microsoft sql server native client包
- 8 打开excel,写汉字的时候提示the setup controller has encountered a problem during install
- 9 Non-static method think\Config::get() should not be called statically
- 10 NotePad++中跳转到函数定义处、函数追踪SourceCookifier插件的安装使用
more标签
网友评论
网友评论文明上网理性发言全部评论(0条)