`
endual
  • 浏览: 3567071 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mysql事务处理

 
阅读更多
<!--$sinatopbar-->

 

<!--$end sinatopbar-->
<!--主题内容开始 -->
<!--第一列start--> <!--第一列end--><!--第二列start-->
正文 字体大小:
<!--博文正文 begin -->

mysql事务处理 实例

(2009-07-27 17:53:54)
<script></script>标签:

php

事务

处理

实例

it

分类: Mysql数据库
<!-- 正文开始 -->

mysql事务处理

mysql事务处理的意义

事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来很大的经济损失。采用事务处理机制,一旦在转账过程中发生意外,则程序将回滚,不做任何处理。
 
MYSQL的事务处理主要有两种方法
1.用begin,rollback,commit来实现
    begin开始一个事务
    rollback事务回滚
    commit 事务确认
2.直接用set来改变mysql的自动提交模式
    mysql默认是自动提交的,也就是你提交一个query,就直接执行!可以通过
    set autocommit = 0 禁止自动提交
    set autocommit = 1 开启自动提交
    来实现事务的处理。
但要注意当用set autocommit = 0 的时候,你以后所有的sql都将作为事务处理,直到你用commit确认或 rollback结束,注意当你结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!
MYSQL只有 INNODB和BDB类型的数据表才支持事务处理,其他的类型是不支持的!
MYSQL5.0 WINXP下测试通过~  ^_^

    mysql> use test;
    Database changed
    mysql> CREATE TABLE `dbtest`(
    -> id int(4)
    -> ) TYPE=INNODB;
Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> select * from dbtest
    -> ;
Empty set (0.01 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(5);
Query OK, 1 row affected (0.00 sec)

mysql> insert into dbtest value(6);
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from dbtest;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(7);
Query OK, 1 row affected (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from dbtest;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

mysql>
 

mysql事务处理php代码

实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。
autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果参数为false则关闭自动提交。MySQL数据库默认为自动提交。
rollback():利用mysqli类中的该方法可以实现事务的回滚。
commit():利用该方法可以实现提交所有查询。
<?php
include_once("conn.php");

$id=$_GET[id];
$conn->autocommit(false);
if(!$conn->query("delete from tb_sco where id='".$id."'"))
{
  $conn->rollback();
}
if(!$conn->query("delete from tb_stu where id='".$id."'"))
{
  $conn->rollback();
}
  $conn->commit();
  $conn->autocommit(true);
  echo "ok"
?>
 
列二
<?php
require('connectDB.php'); //建立数据库连接
mssql_query("BEGIN TRANSACTION DEPS02_DEL"); //开始事务
$delete_dep_sql="DELETE FROM TBLDEPARTMENT WHERE DEPTID='{$_GET[deptid]}'";
// echo $delete_dep_sql."<br>";
mssql_query($delete_dep_sql); //操作数据库
// var_dump($del_result);

$delete_result = mssql_query("select @@ROWCOUNT as id");
$delete_info = mssql_fetch_array($delete_result);
$delete_rows = $delete_info[0];
// var_dump($delete_rows);
mssql_free_result($delete_result);

echo "<script language=javascript>";
if(true){    //判断是否回滚提交
mssql_query("COMMIT TRANSACTION DEPS02_DEL"); //提交事务
echo "alert('delete success!');";
}else{
mssql_query("ROLLBACK TRANSACTION DEPS02_DEL"); //回滚事务
echo "alert('delete faile!');";
}
echo "</script>";
mssql_close();
?>
php+mssql 的事务处理主要是以mssql的语言实现,php只是给其提供个与数据库对话的空间,如果以{BEGIN TRANSACTION }开始,后续的mssql就在该事务期间里,等待提交或回滚得指令;如果不在事务期间内就每个语句直接操作数据库。
<!-- 正文结束 -->

0

<!-- 分享到微博 {$t_blog} -->
阅读(981) 评论 (0) 收藏(0) 转载(2) 打印举报
已投稿到:
    <!-- 循环始 -->
  • 评论加载中,请稍候...<!-- 循环终 -->

登录名:密码:找回密码 注册 记住登录状态

昵   称:

分享到微博    评论并转载此博文

验证码:请点击后输入验证码 收听验证码

匿名评论
发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

<!--博文正文 end --> <script type="text/javascript"></script>
<!--第二列start--><!--第三列start-->
  
<!--第三列end-->
<!--主题内容结束 -->

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有

<script id="PVCOUNTER_FORIE" type="text/javascript"></script><script type="text/javascript"></script><script src="http://sjs.sinajs.cn/blog7common/js/boot.js" type="text/javascript"></script><script type="text/javascript"></script><script type="text/javascript"></script>

 

 

<script src="http://blog.sina.com.cn/lm/iframe/js/blognew2011.js" type="text/javascript"></script>

分享到:
评论

相关推荐

    mysql事务处理用法与实例详解

    ### MySQL事务处理用法与实例详解 #### 一、事务的概念及重要性 在数据库管理中,事务(Transaction)是指一系列作为一个整体的操作序列。这些操作要么全部成功,要么全部失败,不能只执行其中的一部分。事务处理...

    nodejs + mysql 事务处理问题

    nodejs + mysql 事物处理问题 呵呵 看了就知道 记得npm install啊 需要的东西啊 本想免费 苦于没积分 ,需要的的同学,给点分吧

    Java实现的mysql事务处理操作示例

    "Java实现的mysql事务处理操作示例" 本文主要介绍了Java实现的mysql事务处理操作,结合实例形式较为详细的分析了Java基于JDBC操作mysql数据库实现事务处理的相关概念、操作技巧与注意事项。 事务处理是数据库操作...

    mySQL事务处理

    关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....

    MySql事务处理.docx

    MySQL 事务处理是数据库管理系统中的关键特性,主要用于确保数据操作的安全性和一致性。在MySQL中,事务主要应用于支持事务的存储引擎,如InnoDB或BDB。这些存储引擎能够提供事务的四大特性:原子性(Atomicity)、...

    mysql 事务处理学习资料+示例说明

    根据提供的文件信息,本文将详细解释MySQL事务处理的相关知识点,并结合具体的示例代码进行说明。 ### MySQL事务处理基础 在数据库操作中,事务处理是非常重要的一个环节,它能够确保数据的一致性和完整性。MySQL...

    MySQL事务处理详细讲解及完整实例

    本详细讲解将深入探讨MySQL事务处理的各个方面,并通过实例帮助你更好地理解和应用。 一、事务的基本特性 事务具有四大特性,也被称为ACID属性: 1. 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部...

    Mysql事务处理详解

    MySQL事务处理详解主要涵盖事务的基本概念、特性以及事务隔离级别,这些都是数据库管理中至关重要的概念。MySQL中的事务主要用于处理大量且复杂的操作,确保数据的一致性和完整性。 首先,事务是MySQL数据库操作的...

    MySQL事务处理与并发访问.pdf

    MySQL事务处理与并发访问.pdf

    php实现mysql事务处理的方法

    本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...

    MySql事务处理.pdf

    MySQL中的事务处理是数据库管理的重要组成部分,主要目的是确保数据的一致性和完整性。事务是一组SQL语句,它们作为一个单元执行,要么全部成功,要么全部回滚,这确保了原子性。事务处理的引入是为了解决多用户、多...

    mysql事务处理[归类].pdf

    MySQL的事务处理是数据库管理中的核心功能,尤其在软件开发中,确保数据一致性、安全性和可靠性至关重要。事务处理允许数据库操作作为一个不可分割的整体执行,确保数据的完整性和一致性。在人员管理系统等应用中,...

    php下pdo的mysql事务处理用法实例

    接下来,我们来看PHP下PDO的MySQL事务处理实例。以下是几个关键步骤: 1. **关闭自动提交**:在开始事务之前,需要关闭自动提交模式。在PDO中,可以通过设置`PDO::ATTR_AUTOCOMMIT`属性为0来实现。例如: ```php ...

    MySQL事务处理与应用简析

    MySQL事务处理是数据库管理系统中的关键特性,特别是在需要确保数据完整性和一致性的商务级应用中。事务是一组数据库操作,它们被视为单个逻辑工作单元,必须全部成功执行或全部不执行。这种机制对于防止数据错误和...

    MySQL事务剖析1

    综上,MySQL事务处理是数据库系统中不可或缺的部分,它通过ACID特性、隔离级别、MVCC和锁机制确保数据的一致性,并在Java、Spring等开发环境中提供了便捷的事务管理接口。理解并合理使用这些概念和机制,对数据库...

Global site tag (gtag.js) - Google Analytics