PHP操作MySQL事务代码
来源:互联网 发布:控制情绪 知乎 编辑:程序博客网 时间:2024/05/03 15:58
事务都应该具备ACID特征。所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义:
原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。
一致性:在事务处理执行前后,数据库是一致的。也就是说,事务应该正确的转换系统状态。比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户,要么两个帐户都不变,没有其他的情况。
隔离性:一个事务处理对另一个事务处理没有影响。就是说任何事务都不可能看到一个处在不完整状态下的事务。比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态。
持续性:事务处理的效果能够被永久保存下来。反过来说,事务应当能够承受所有的失败,包括服务器、进程、通信以及媒体失败等等。比如:银行转帐过程中,转帐后帐户的状态要能被保存下来。
在PHP中,mysqli 已经很好的封装了mysql事务的相关操作。如下示例:
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
$sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//开始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo 'ok';
}else{
echo 'err';
$mysqli->rollback();
}
在这里,我们再使用 php mysql 系列函数执行事务。
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
$sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
$conn = mysql_connect('localhost','root','');
mysql_select_db('DB_Lib2Test');
mysql_query('start transaction');
//mysql_query('SET autocommit=0');
mysql_query($sql1);
mysql_query($sql2);
if(mysql_errno ()){
mysql_query('rollback');
echo 'err';
}else{
mysql_query('commit');
echo 'ok';
}
// mysql_query('SET autocommit=1');
// mysql_query($sql3);
在这里要注意,
MyISAM:不支持事务,用于只读程序提高性能
InnoDB:支持ACID事务、行级锁、并发
Berkeley DB:支持事务
- PHP操作MySQL事务代码
- PHP 实现MySQL事务操作
- PHP PDO操作mysql事务
- PHP操作MYSQL用“事务”的例子
- php操作mysql事务深度测试
- php操作mysql事务深度测试
- php中对MYSQL操作之事务控制,回滚
- php中对MYSQL操作之事务控制,回滚
- PHP 数据库 事务操作
- codeigniter 操作mysql的PHP代码--更新
- php实现事务 (mysql)
- php mysql事务详解
- php mysql事务
- php mysql事务详解
- php处理mysql事务
- php + mysql 分布式事务
- mysql操作事务
- MySql中操作事务
- 关于synergy个人使用感受(两台机器一个键盘鼠标)
- 夺冠概率 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。 假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
- SQL Server数据库查询区分大小写、全半角——排序规则的应用
- 用AS3绘图API来画一个旋转的太极图
- unicode、UTF-8、UTF-16、UTF-32、code point、code unit、Byte Order Mark(BOM)
- PHP操作MySQL事务代码
- FMDatabase
- unix环境高级编程--杂记一
- DEC多国字符集
- loadrunner 监控windows系统
- "此页的状态信息无效,可能已损坏"的原因和解决方法
- VS C#中的代码复制拷入到Word时汉字出现乱码的问题
- hdu2222,(ac自动机)
- Android 如何调整模拟器大小