什么时候用到事务,用它的好处是什么
web PHP 2019-09-29 326 0
关于本站

淘淘IT

记录工作学习中的点点滴滴

本站创建于2017年,用于记录工作和学习中遇到的问题。同时,不断提升网站的使用体验,增加新的功能。

754399 1184 11
最新评论
@xiaoniba 好像是编码GBK和utf-8的区别,请看下我摘抄的一篇文章,里面有介绍http://taotaoit.com/article/details/885.html,你可以尝试下是否可以
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
\x7f-\xff 这个匹配什么东东,会不会出现安全问题??? 改成这样如何 if ($strict && !preg_match('/^[\w\.\*\x{4e00}-\x{9fa5}]+$/u', $key)) {
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
完美解决 牛逼
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
完美解决
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
文章标签更多
ThinkPHP (119)
Mysql (25)
DedeCms (28)
jQuery (27)
证件照 (1)
setInc (3)
setDec (3)
onclick (3)
打开边栏(ESC) 关闭边栏(ESC)

事务是什么东西

事务是一个整体,结果就俩种(成功,失败)
要么全部成功(提交),要么全部失败(回滚),就算成功一部分也要(回滚)

什么时候要用到事务
举个例子:
1.把一条数据插入到俩张表的时候,就要用到事务了。
数据是 data 表示。
如果 data在插入第一张表的时候成功了,在插入第二张表的时候失败了,怎么办?

要么保证全部成功(提交),要么就回滚(一条也别成功)。才能保证数据的准确性。


事务的4个特性
原子性
一致性
隔离性

持续性


用它的好处是什么?
好处就是上面的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就可以了

版权声明:本篇文章来源于网络。 来源链接

相关推荐
openssl_private_decrypt解密失败
PHP | 2019-01-16 1892
复制别人的解密程序,原程序可以解密,复制过来就不可以 一步步尝试发现,秘钥换行符有区别, 原秘钥有换行符,复制过来不知道什么时候把换行符清空了,成了一行字符串了。
那三个特殊字符的ascii码239,187,191就是BOM头的 EF BB BF
PHP | 2019-01-24 1512
原问题 字符串长度问题 vardump打印一字符串 string(14) "00107042012" 获取到的字符串长度怎么是14 明明是11个数字啊! 为什么? 回答: 你的字符串有前有三个特殊字符(+BOM) <?php $str = '00107042012'; $str1 = '0010...
评论:0条
评论加载中...
发表评论