一,概述
1,作用
主要用户操作处理量大,复杂度高的数据。要保证sql语句,要么全执行,要么全不执行,但它必须要满足四个条件:原子性,一致性,隔离性,持久性。
2,方法
事务有两种处理方法
【用 BEGIN, ROLLBACK, COMMIT来实现】
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
【直接用 SET 来改变 MySQL 的自动提交模式】
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
二,代码
1,shell中对mysql的使用
BEGIN ;
insert into user_test value(5);
insert into user_test value(6);
commit;
//首先开始事务,相关的sql语句,然后提交事务执行。这种方式要比单独两条插入耗时。
2,php中对mysql的使用
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); }
mysqli_query($conn, "set names utf8");
mysqli_select_db( $conn, 'RUNOOB' );
mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 mysqli_begin_transaction($conn);
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(8)")) { mysqli_query($conn, "ROLLBACK"); // 判断当执行失败时回滚 }
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(9)")) { mysqli_query($conn, "ROLLBACK"); // 判断执行失败时回滚 }
mysqli_commit($conn);
mysqli_close($conn);
?>