QeePHP的事务安全支持

摘要:
Qee对事务提供了简单的支持,当然只有在存储引擎支持事务的前提下!在Qee中添加事务比较简单,如下:$user=$this->_app->currentUserObject();if{QDB::getConn()->startTrans();try{$user->nickname=trim;$user->field->sex=$this->_context->sex;$user->save();}catch{QDB::getConn()->completeTrans;//友好的错误提示...}QDB::getConn()->completeTrans;}
Qee对事务提供了简单的支持,当然只有在存储引擎支持事务的前提下! 比如我们的的用户表分为用户基本表member表和用户详细信息表memberfield表,他们为一对一hasone,memberfield存有member表的主键uid,假设关联的属性为field 当我们更新用户信息时,可能同时要更新member表,和memberfield表,比如: $user = $this->_app->currentUserObject(); if ($this->_context->isPOST()) { $user->nickname = trim($this->_context->nickname); $user->field->sex = $this->_context->sex; $user->save(); } 假设现在nickname没有问题,而提供的sex数据有问题,并且导致数据库插入失败,极有可能导致同一个请求nickname更改成功,sex失败,这个可能还不会导致很严重的问题,如果涉及到一些重要数据,例如电子商务等就严重了! 在Qee中添加事务比较简单,如下: $user = $this->_app->currentUserObject(); if ($this->_context->isPOST()) { QDB::getConn()->startTrans(); try { $user->nickname = trim($this->_context->nickname); $user->field->sex = $this->_context->sex; $user->save(); } catch (QException $e) { QDB::getConn()->completeTrans(false); // 友好的错误提示... } QDB::getConn()->completeTrans(true); }

免责声明:文章转载自《QeePHP的事务安全支持》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇eyeOS2.5安装,试用java开发——Cloneable接口、clone()方法和深浅拷贝下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ORACLE 11GR2常用参数(含隐含参数)设置

ORACLE 11GR2常用参数(含隐含参数)设置如下: alter system set "_PX_use_large_pool" = true scope=spfile;alter system set "_clusterwide_global_transactions" = false scope=spfile;#RAC环境 https://www....

spring学习(三) ———— spring事务操作

     前面一篇博文讲解了什么是AOP。学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理。                                       --wh 一、jdbcTemplate         什么是JdbcTemplate?             spring提供用...

支付宝 分布式事务服务 DTS三-copy

典型场景和实现原理首先来看一个典型的分布式事务场景 在这个例子中,app1 作为分布式事务的发起方调用了参与者 app2 的 insert 操作和 app3 的 update 操作,之后调用自己的本地 insert 操作,在这个分布式事务中包含了 3 次对 db 的操作,而 3 个 db 分属于不同的系统,图中虚线覆盖的范围是 app1 的一个本地事务模版...

Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。   有时需要把一些数据内置到应用中,常用的有以下2种方式:其一直接拷贝制作好的SQLite数据库文件,其二是使用系统提供的数据库,然...

【多个客户端同时调用存储过程,防止数据重复】的解决方法

场景:多个客户端并发,同时调用同一个存储过程,如何处理,使之查询数据不会出现重复? 解决方法: 在查询的表上使用排它锁 存储过程示例: CREATE PROCEDURE id_test @deal_no varchar(10) output, @getno_date varchar(50) output AS declar...

Oracle、SqlServer——临时表

一、oracle 1、概述: oracle数据库的临时表的特点: 临时表默认保存在TEMP中; 表结构一直存在,直到删除;即创建一次,永久使用; 不支持主外键。 可以索引临时表和在临时表基础上建立视图。建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效. 临时表可以拥有触发器. 临时表分为事务型和会话型 会话型:基于会话的临时表,数据从会话...