事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
删除的SQL语句
deletefrom userinfo where ~~~ delete from mail where ~~ delete fromarticle where~~ ~~
如果没有事务处理,在你删除的过程中,假设出错了,只执行了第一句,那么其后果是难以想象的!
但用事务处理。如果删除出错,你只要rollback就可以取消删除操作(其实是只要你没有commit你就没有确实的执行该删除操作)
一般来说,在商务级的应用中,都必须考虑事务处理的!
查看inodb信息
shell> /usr/local/mysql -u root -p
mysql> showvariables like "have_%"
系统会提示:
+------------------+-------+ |Variable_name | Value | +------------------+-------+ |have_bdb | YES | | have_crypt | YES | |have_innodb | YES | | have_isam | YES | |have_raid | YES | | have_symlink | YES | |have_openssl | NO | | have_query_cache | YES | +------------------+-------+ 8 rows in set (0.05sec)
如果是这样的,那么我们就可以创建一张支持事务处理的表来试试了。
MYSQL的事务处理功能!
作者:Feifengxlq Email:feifengxlq@sohu.com
一直以来我都以为MYSQL不支持事务处理,所以在处理多个数据表的数据时,一直都很麻烦(我是不得不将其写入文本文件,在系统重新加载得时候才写入数据库以防出错)~今天发现MYSQL数据库从4.1就开始支持事务功能,据说5.0将引入存储过程^_^
先简单介绍一下事务吧!事务是DBMS得执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。一般来说,事务是必须满足4个条件(ACID)
原子性(Autmic):事务在执行性,要做到“要么不做,要么全做!”,就是说不允许事务部分得执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库得影响!
一致性(Consistency):事务得操作应该使使数据库从一个一致状态转变倒另一个一致得状态!就拿网上购物来说吧,你只有即让商品出库,又让商品进入顾客得购物篮才能构成事务!
隔离性(Isolation):如果多个事务并发执行,应象各个事务独立执行一样!
持久性(Durability):一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复!
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用setautocommit=0的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)
下次有空说下MYSQL的数据表的锁定和解锁!
MYSQL5.0 WINXP下测试通过~ ^_^
mysql>use test; Database changed mysql> CREATE TABLE `dbtest`( -> id int(4) -> ) TYPE=INNODB; Query OK, 0 rowsaffected, 1 warning (0.05 sec) mysql> select * from dbtest -> ; Empty set (0.01 sec) mysql> begin; QueryOK, 0 rows affected (0.00 sec) mysql> insert into dbtestvalue(5); Query OK, 1 row affected (0.00 sec) mysql>insert into dbtest value(6); Query OK, 1 row affected (0.00sec) mysql> commit; Query OK, 0 rows affected (0.00sec) mysql> select * from dbtest; +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set(0.00 sec) mysql> begin; Query OK, 0 rows affected (0.00sec) mysql> insert into dbtest values(7); Query OK, 1row affected (0.00 sec) mysql> rollback; Query OK, 0rows affected (0.00 sec) mysql> select * fromdbtest; +------+ | id | +------+ | 5 | | 6| +------+ 2 rows in set (0.00sec) mysql> ******************************************************************************************************************* [PHP] functionTran( $sql ) { $judge = 1; mysql_query('begin'); foreach ($sql as $v) { if ( !mysql_query($v) ) { $judge =0; } } if ($judge == 0){ mysql_query('rollback'); return false; } elseif ($judge == 1) { mysql_query('commit'); return true; } } [/PHP] ************************************************ <?php $handler=mysql_connect("localhost","root",""); mysql_select_db("task"); mysql_query("SETAUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行 mysql_query("BEGIN");//开始事务定义 if(!mysql_query("insertinto trans (id)values('2')")) { mysql_query("ROOLBACK");//判断当执行失败时回滚 } if(!mysql_query("insertinto trans (id)values('4')")) { mysql_query("ROOLBACK");//判断执行失败回滚 } mysql_query("COMMIT");//执行事务 mysql_close($handler); ?>

Lockwaittimeoutexceeded;tryrestartingtransaction-如何解决MySQL报错:事务等待超时在使用MySQL数据库时,有时可能会遇到一个常见的错误:Lockwaittimeoutexceeded;tryrestartingtransaction,该错误表示事务等待超时。这个错误通常发生在并

MySQL事务处理:自动提交与手动提交的区别在MySQL数据库中,事务是一组SQL语句的集合,要么全部执行成功,要么全部执行失败,保证了数据的一致性和完整性。在MySQL中,事务可以分为自动提交和手动提交,其区别在于事务提交的时机以及对事务的控制范围。下面将详细介绍自动提交和手动提交的区别,并给出具体的代码示例来说明。一、自动提交在MySQL中,如果没有显示

MySQL事务的原理及应用场景在数据库系统中,事务是一组SQL操作的集合,这些操作要么全部成功执行,要么全部失败回滚。MySQL作为一种常用的关系型数据库管理系统,支持事务的特性,能够确保数据库中的数据在一致性、隔离性、持久性和原子性方面得到保证。本文将从MySQL事务的基本原理入手,介绍其应用场景,并提供具体的代码示例供读者参考。MySQL事务的原理:My

1.PDO简介PDO是PHP的一个扩展库,它提供了一个面向对象的方式来操作数据库。PDO支持多种数据库,包括Mysql、postgresql、oracle、SQLServer等。PDO使开发人员能够使用统一的api来操作不同的数据库,这使得开发人员可以在不同的数据库之间轻松切换。2.PDO连接数据库要使用PDO连接数据库,首先需要创建一个PDO对象。PDO对象的构造函数接收三个参数:数据库类型、主机名、数据库用户名和密码。例如,以下代码创建了一个连接到mysql数据库的对象:$dsn="mysq

事务确保数据库数据完整性,包括原子性、一致性、隔离性和持久性。JDBC使用Connection接口提供事务控制(setAutoCommit、commit、rollback)。并发控制机制协调并发操作,使用锁或乐观/悲观并发控制来实现事务隔离性,以防止数据不一致。

PHP数据对象(PDO)扩展提供了与数据库服务器高效且面向对象的交互。其高级查询和更新功能使开发人员能够执行复杂的数据库操作,从而提高性能和代码可维护性。本文将深入探讨PDO的高级查询和更新功能,指导您掌握其强大功能。高级查询:使用占位符和绑定参数占位符和绑定参数是提高查询性能和安全性的重要工具。占位符使用问号(?)表示查询中可替换的参数,而绑定参数则允许指定每个参数的数据类型和值。通过使用这些方法,您可以避免sql注入攻击并提高性能,因为数据库引擎可以提前优化查询。//使用占位符$stmt=$

PHP事务错误定位与修复方法在开发过程中,我们经常会涉及到数据库操作。为了保证数据的完整性和一致性,在处理数据库操作时,我们经常会使用事务来确保一系列操作的原子性。然而,在实际的开发过程中,有时候事务会出现错误,导致数据操作不完整或不一致。本文将介绍在PHP中如何定位和修复事务错误,同时提供具体的代码示例。事务错误的定位在PHP中,我们可以使用MySQLi或

MongoDB技术开发中遇到的事务管理问题解决方案分析随着现代应用程序变得越来越复杂和庞大,对数据的事务处理需求也越来越高。作为一种流行的NoSQL数据库,MongoDB在数据管理方面有着出色的性能和扩展性。然而,MongoDB在数据一致性和事务管理方面相对较弱,给开发人员带来了挑战。在本文中,我们将探讨在MongoDB开发中遇到的事务管理问题,并提出一些解


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

WebStorm Mac version
Useful JavaScript development tools

Atom editor mac version download
The most popular open source editor

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.
