ci事务

CI框架百问百答:CodeIgniter的事务用法?--第9问

时间 2013-06-06 10:57:45  CSDN博客

原文  http://blog.csdn.net/haor2756/article/details/9036971

主题 数据库CodeIgniter

做为一名码工,没用过事务,那也不是好码工。

CodeIgniter的数据库抽象允许你在支持事务安全的数据库表中使用事务。在MySQL中,你需要用InnoDB或BDB表而不是更常用的MyISAM。大多数其它的数据库平台都原生支持事务。

一起看看CodeIgniter的事务:

CodeIgniter 的事务方法

CodeIgniter 使用的事务方法与流行的数据库类ADODB所使用的处理过程非常相似。我们选择那种方法是因为它极大地简化了运行事务的处理过程。大多数情况下你只需要编写两行代码就行了。

传统上, 事务需要实现大量工作, 他们要求你随时跟踪你的查询, 并根据查询的成功或失败来决定  提交  还是  回滚 。这是特别麻烦的嵌套查询。相比之下, 我们实现了一种智能的事务系统, 它将自动地为你做这些事情(如果你选择手动管理你的事务, 这也是可以的, 但这确实没什么好处)。

运行事务

要使用事务来运行你的查询, 你可以使用如下所述的  $this->db->trans_start()  和  $this->db->trans_complete()  函数:

$this->db->trans_start();
$this->db->query(‘一条SQL查询...‘);
$this->db->query(‘另一条查询...‘);
$this->db->query(‘还有一条查询...‘);
$this->db->trans_complete();

在 start/complete 函数之间, 你想运行多少条查询都可以, 根据任何给定查询的成功或失败, 它们将被提交或者回滚。

严格模式(Strict Mode)

默认情况下, CodeIgniter 以 严格模式 运行所有事务。当严格模式被启用时, 如果你正在运行多组的事务, 只要有一组失败, 所有组都会被回滚。如果严格模式被禁用, 每一组都被视为独立的组, 这意味着其中一个组的失败不会影响其它组。

严格模式能以下面的方式禁用:

$this->db->trans_strict(FALSE);

管理错误信息

如果你在你的  config/database.php  文件中启用了错误报告, 当提交没有成功时, 你会看到一条标准的错误信息。如果调试被关闭, 你可以通过这种方式来管理你的错误信息:

$this->db->trans_start();
$this->db->query(‘AN SQL QUERY...‘);
$this->db->query(‘ANOTHER QUERY...‘);
$this->db->trans_complete();

if ($this->db->trans_status() === FALSE)
{
    // 生成一条错误信息... 或者使用 log_message() 函数来记录你的错误信息
}

禁用事务

当你使用  $this->db->trans_start()  时, 事务就已经被自动启用了。如果你想要禁用事务, 你可以使用  $this->db->trans_off()  来实现:

$this->db->trans_off()

$this->db->trans_start();
$this->db->query(‘AN SQL QUERY...‘);
$this->db->trans_complete();

当事务被禁用的时候, 你的查询将被自动提交, 就像没有使用事务时那样。

测试模式(Test Mode)

你可以选择性地将事务系统设置到 "测试模式" , 这将导致你的查询被回滚 -- 尽管查询会生成有效结果。要使用测试模式, 只需将  $this->db->trans_start()  函数的第一个参数设置为  TRUE  即可:

$this->db->trans_start(TRUE); // 查询将被回滚
$this->db->query(‘AN SQL QUERY...‘);
$this->db->trans_complete();

手动运行事务

如果你想要手动运行事务, 可以使用下面的方法:

$this->db->trans_begin();

$this->db->query(‘AN SQL QUERY...‘);
$this->db->query(‘ANOTHER QUERY...‘);
$this->db->query(‘AND YET ANOTHER QUERY...‘);

if ($this->db->trans_status() === FALSE)
{
    $this->db->trans_rollback();
}
else
{
    $this->db->trans_commit();
}

说明:  手动运行事务时, 请务必使用  $this->db->trans_begin()  函数, 而 不是  $this->db->trans_start() .

时间: 2024-08-01 08:33:40

ci事务的相关文章

CI框架--事务

CI框架--事务 CI框架中事务封装的很完善,使用起来很简单 1.不开启事务 1 2 3 4 //不开启事务  前两个sql 能够执行成功,第三个执行失败 $this->device_model->addForCamera(1, '爱三123', '2016122903', 0); $this->device_model->setStateInDevices(1, array(2)); $this->device_model->addForCamera(1, '爱三12

CI源码分析(三)—DB事务

(0) 使用方法 可以使用系统提供的方法: $this->db->trans_start(); // 开始事务 $this->db->query(); // 执行sqls $this->db->trans_complete(); // 结束事务(不需要关心是否回滚) if !$this->db->trans_status do something; // 错误处理 也可以自己处理commit和rollback: $this->db->trans_

php CI 框架 mysql 事务使用

php CI 文档地址 http://codeigniter.org.cn/user_guide/index.html 事务 CodeIgniter的数据库抽象允许你在支持事务安全的数据库表中使用事务.在MySQL中,你需要用InnoDB或BDB表而不是更常用的MyISAM.大多数其它的数据库平台都原生支持事务. 如果你对事务不熟悉,我们建议您上网寻找相关资源学习.以下信息假设你已经明白事务的相关概念. CodeIgniter 的事务方法 CodeIgniter 使用的事务方法与流行的数据库类A

操作订单时出现的事务问题

今天在操作订单的代码时,控制台总是报出反射方法内部出现问题,debug仔细查找后,确定问题出现在dao层: 下面是我写的具体的订单dao public class OrderDao { QueryRunner qr = new QueryRunner(); //当点击意见购买时生成订单即往订单表中插入订单 public void addOrder(Order order){ //得到数据库连接 Connection con = null; try { con = JdbcUtils.getCon

CI(-)框架结构

一 CI 是什么 1 CodeIgniter is an Application Development Framework - a toolkit - 2 for people who build web sites using PHP. 3 Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, 4 by providing

PHP CI框架最近学到的内容

CI框架配置方面注意的细节 在config里面的database.php里面是和数据库配置相关的内容 1 $db['default'] = array( 2 'dsn' => '', 3 'hostname' => '127.0.0.1, //ip 4 'username' => 'root', //用户名 5 'password' => 'root', //密码 6 'database' => 'kp_community', //数据库名称 7 'dbdriver' =&g

**【ci框架】精通CodeIgniter框架

http://blog.csdn.net/yanhui_wei/article/details/25803945 一.大纲 [php] view plaincopy 1.codeigniter框架的授课内容安排 2.codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3.codeigniter框架的具体安装步骤 |-----官网下载:http://www.codeigniter.com/ |-----httpd.conf配

ci学习

<?php #访问配置 1.遇到无论什么URL 只能访问默认页面. 强制在你的 URL 中添加一个问号,要做到这点,打开 application/config/config.php 文件 2.访问方式 application/config.php 配置文件中启用它 $config['enable_query_strings'] = FALSE; //index.php/controller/method/id/33 TRUE index.php?c=controller&m=method&a

唱吧DevOps的落地,微服务CI/CD的范本技术解读

原文地址:http://www.infoq.com/cn/articles/devops-landing-in-changba?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 作者 钮博彦 刘宇桐 发布于 2017年3月28日. 1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里