mysql之事务
事务处理
begin 开始一个事物
commit 事务确认
rollback 事务回滚
end 事务结束
innodb下可以实现事务
开始执行事务时如果在事务执行的过程中出现错误那么事务会回滚之前执行的都会失效
在创建表时,就可以为table选择InnoDB引擎了。如果是以前创建的表,可以使用
alter table table_name engine=InnoDB来改变数据表的引擎以支持事务。
例:
<?php
$conn = mysql_connect('localhost','root','') or die ("数据连接错误!!!");
mysql_select_db('shop',$conn);
mysql_query("set names 'utf8'"); //使用utf8中文编码;
//开始一个事务
mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO main (num) VALUES (123)";
$sql2 = "INSERT INTO main (num1) VALUES (456)";//这条我故意写错
//如果不用事务或者用的而不是innodb引擎则$sql会成功$sql2会失败
//用事务如果其中一条出现错误那么两条数据都不会执行成功
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
}
mysql_query("END");
?>