mysql事务处理 begin_mysql 事务处理

本文介绍了如何在MySQL中进行事务处理,重点讨论了使用BEGIN、ROLLBACK、COMMIT以及设置自动提交模式(autocommit)的两种方法。通过示例展示了在事务中插入记录的过程,强调了当发生错误时如何回滚事务以及事务完成后提交更改的重要性。
摘要由CSDN通过智能技术生成

mysql 事务处理(表的引擎必须是 innodb / BDB)

主要是两种两法:推荐用第一种

1.用 begin,rollback,commit 来实现

begin 开始一个事务

rollback 事务回滚

commit 事务提交

2.直接用 set  来改变 mysql的自动提交模式,系统默认是自动提交的

set autocommit = 0; 禁止自动提交

set autocommit = 1;  开启自动提交

用第一种方式可这样:

/*

表信息 innodb(id,text)

*/

require_once(‘conn.php‘); // 数据库连接信息

$flag = 1; // 标识是完成提交还是回滚 1.提交完成 0.失败回滚

//因为是自动提交的(默认),所以要想用事务,就必须手动开始事务,并手动提交

//开启事务

mysql_query("BEGIN"); // 或者 mysql_query("START TRANSACTION");

$sql1= "insert into innodb values(‘‘, ‘xxx‘)";

$sql2 = "insert into innodb values(‘‘, ‘iiii‘)";

$sql3 = "insert into innodb values(‘‘, ‘eee‘ee‘)";

if(!mysql_query($sql1)){$flag = 0;}

if(!mysql_query($sql2)){$flag = 0;}

if(!mysql_query($sql3)){$flag = 0;}

if($flag)

{

mysql_query("commit");

echo "commit";

}else

{

mysql_query("rollback");

echo "rollback";

}

// 因为 $sql3有误,所以是无法插入以上数据的

//结束这事务

mysql_query("END");

----------------

第二种方式可用:

require_once(‘conn.php‘); // 数据库连接信息

// 相当于开启了事务,禁止自动提交

mysql_query("set autocommit=0", $conn);

$flag = 1; // 标识是完成提交还是回滚 1.提交完成 0.失败回滚

/*

表信息 innodb(id,text)

*/

$sql1= "insert into innodb values(‘‘, ‘xxx‘)";

$sql2 = "insert into innodb values(‘‘, ‘iiii‘)";

$sql3 = "insert into innodb values(‘‘, ‘eee‘ee‘)";

if(!mysql_query($sql1)){$flag = 0;}

if(!mysql_query($sql2)){$flag = 0;}

if(!mysql_query($sql3)){$flag = 0;}

if($flag)

{

mysql_query("commit");

echo "commit";

}else

{

mysql_query("rollback");

echo "rollback";

}

mysql_query("END", $conn); // 结束事务

mysql_query("set autocommit=1", $conn); // 还原自动提交,取消事务

// 因为 $sql3有误,所以是无法插入以上数据的

/*一定在提交或者回滚后,要调用 mysql_query("END", $conn);和mysql_query("set autocommit=1", $conn);,不然会把后面的 查询也当做事务来处理,不提交时就无法执行

原文:http://www.cnblogs.com/lin3615/p/3899990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值