浅析mysql的事务处理及应用
删除SQL语句
删除用户信息,~ ~ ~
从邮件中删除~
从文章中删除~
~ ~
如果没有交易处理,在删除你的过程中,假设是错误的,只执行第一句话,后果不堪设想!
但是处理事务。如果您删除了一个错误,只要回滚就可以取消删除操作(事实上,如果没有提交,则不执行删除操作)。
一般来说,在业务级应用程序中,必须考虑事务处理!
看inodb信息
壳> / usr /局部/ MySQL根P U
MySQL >显示变量如have_ %
系统将提示:
------------------ ------- + + +
| variable_name |价值|
------------------ ------- + + +
| have_bdb |是|
| have_crypt |是|
have_innodb |是| |
| have_isam |是|
| have_raid |是|
| have_symlink |是|
| have_openssl |没有|
| have_query_cache |是|
------------------ ------- + + +
8行(0.05秒)
如果是这样的话,我们可以创建一个支持事务处理的表。
MySQL的事务处理功能!
我认为,MySQL不支持事务处理已经在处理多个数据表,已经很麻烦(我要写一个文本文件,当系统重装是写在错误的情况下,MySQL数据库)今天从4.1开始的事务数据库的功能支持,可以说是5 ^ _ ^存储过程的介绍
第一笔交易简介!DBMS事务是执行单元,它由有限的数据库操作序列组件组成,但不是任何数据库操作序列都可以是事务。一般来说,事务必须满足4个条件(酸)。
Atomicity(autmic):事务的执行,做或不做,或做这一切!也就是说,事务部分是不允许执行的,即使一个事务不能因为失败而完成,也必须在回滚时消除对数据库的影响。
Conformance(一致性):交易操作应该使数据库从一个一致状态变为另一个一致状态。例如,以网上购物为例,你只能将货物从商店中取出,让货物进入顾客的购物篮形成业务。
隔离(隔离):如果多个事务同时执行,它应该与不同事务的独立执行相同。
持久性(持久性):事务的成功执行对数据库是持久的,即使数据库失败,它也应该能够恢复!
MySQL中有两种主要的事务处理方法。
1。用开始、回滚、提交实现它
开始事务
回滚事务回滚
提交交易验证
2,直接更改MySQL的自动提交模式
MySQL是默认是自动提交的,你提交一个查询,它是直接执行的!我们可以
设置自动提交= 0禁止自动提交
设置自动提交= 1打开自动提交
实现事务处理。
但是请注意,当你使用自动提交= 0,你所有的SQL将提交或回滚事务之前,确认你。注意,当您完成此事务时,您也将启动一个新业务!
个人推荐第一种方法!
只有InnoDB和BDB型数据表在MySQL支持事务处理是可用的!不支持其他类型!(记住!)
通过MySQL5.0 WinXP测试
使用测试;
数据库的改变
MySQL >创建表`例`(
- id int(4)
->类型= InnoDB);
查询OK行,0个受影响,1个警告(0.05秒)
MySQL >选择*从测试
->;
空集(0.01秒)
开始;
查询OK,0行受影响(0秒)
MySQL >插入测试值(5);
查询OK,1行受影响(0秒)
MySQL >插入测试值(6);
查询OK,1行受影响(0秒)
提交;
查询OK,0行受影响(0秒)
MySQL >选择*从测试;
------ + +
| ID |
------ + +
5 | |
6 | |
------ + +
2行(0秒)
开始;
查询OK,0行受影响(0秒)
MySQL >插入测试值(7);
查询OK,1行受影响(0秒)
回滚;
查询OK,0行受影响(0秒)
MySQL >选择*从测试;
------ + +
| ID |
------ + +
5 | |
6 | |
------ + +
2行(0秒)
MySQL >
*******************************************************************************************************************
复制代码代码如下所示:
函数传递($ SQL){
法官= 1;
mysql_query('begin);
foreach($ SQL达v){
如果(!mysql_query($ V)){
法官= 0;
}
}
如果($ = 0){
mysql_query('rollback);
返回false;
}
elseif(= = 1美元的判断){
mysql_query('commit);
返回true;
}
}
************************************************
复制代码代码如下所示:
< PHP
为处理= mysql_connect(localhost
mysql_select_db(任务);
mysql_query(设置自动提交= 0); / /设置为自动提交,因为MySQL默认立即
mysql_query(开始 / /);对交易的定义
如果(!mysql_query)(插入式(ID)值(2'))))
{
mysql_query(重算); / /判断当执行不能回滚
}
如果(!mysql_query)(插入式(ID)值(4'))))
{
mysql_query(重算); / /回滚执行故障判断
}
mysql_query(提交); / /执行事务
mysql_close($处理);
>