1.为什么需要使用事务?事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必
1.为什么需要使用来实现
begin开始一个事务
rollback事务回滚
来改变mysql的自动提交模式mysql默认是自动提交的,香港虚拟主机,也就是你提交一个query,就直接执行!可以通过
set autocommit = 0 禁止自动提交
set autocommit = 1 开启自动提交
和BDB类型的数据表才支持事务处理,其他的类型是不支持的! 事务都应该具备ACID特征。所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写 原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。4.事务的简单的实例
$db = mysql_connect('localhost','root','') or die('链接失败');//链接数据库
mysql_select_db('test');//选择数据库
mysql_query("set autocommit = 0");//设置mysql不自动提交
mysql_query("begin");//设置事务的开始
//插入数据
$sql = "INSERT INTO `order` (`order_num`) VALUES ('1sadfsdfafasdfasdffffffffsd1111111')";
$sql2 = 'INSERT INTO `order` (`order_num`) VALUES ("1sadfsdfafasdfasdffffffffsd1111111")';
$q = mysql_query($sql);
$q2 = mysql_query($sql2);
if(!$q && !q2){
mysql_query("rollback");//执行回滚
echo '执行失败,数据回滚';exit;
}
mysql_query("COMMIT");//提交事务
echo "成功";
mysql_close($db);
本文出自 “烛光照亮天堂-IT技术之路” 博客,请务必保留此出处