一,概述
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的使用
$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);
?>