mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!
一般來說,事務是必須滿足4個條件(acid): atomicity(原子性)、consistency(穩定性)、isolation(隔離性)、durability(永續性)
執行下面的程式
$mysqli = new mysqli('localhost
','root
','mayi1991
','mysqldemo');
if($mysqli->connect_error)
$sql1 = "
update account set balance = balance - 2 where id = 1";
//這裡故意寫錯指令中的balance1屬性
$sql2 = "
update account set balance1 = balance + 2 where id = 2
";
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2)
else
$mysqli->close();
雖然上面的**有報錯,但是在資料庫中,id=1的balance已經改變;這樣就會出現問題;
我們要的同時改變,如果有乙個出錯,就不改變;這個時候,我們就需要「事務控制」來保證「一致性」;
我們需要用到的方法autocommit() commit();看下面的**
$mysqli = new mysqli('localhost
','root
','mayi1991
','mysqldemo');
if($mysqli->connect_error)
//關閉資料庫自動提交
$mysqli->autocommit(false
);$sql1 = "
update account set balance = balance - 2 where id = 1";
//這裡故意寫錯屬性balance1
$sql2 = "
update account set balance1 = balance + 2 where id = 2";
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2)else
$mysqli->close();
首先利用autocommit(false)方法,關閉資料庫自動提交,然後當操作語句全部成功後,commit()提交到資料庫;
如果操作失敗,我們用rollback()方法回退。
PHP 事務處理
在對資料庫會進行多次操作的時候會使用到事務 transaction 其中的底層邏輯如下 1 開啟事務 begin 2 取消資料庫自動寫入 set autocommit 0 3 sql1賦值 第一句所要執行的內容 4 sql2賦值 等等 5 執行mysql query sql1 sqln 6 判斷sq...
php 事務處理transaction
mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!一般來說,事務是必須滿足4個條件 acid atomicity 原子性 consisten...
PHP與MYSQL事務處理
mysql的事務處理主要有兩種方法。1 用begin,rollback,commit來實現 begin 開始乙個事務 rollback 事務回滾 commit 事務確認 2 直接用set來改變mysql的自動提交模式 mysql預設是自動提交的,也就是你提交乙個query,它就直接執行!我們可以通過...