MySQL 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句就構成一個事務!
在 MySQL 中只有使用了 Innodb 資料庫引擎的資料庫或表格才支援事務。
事務處理可以用來維護資料庫的完整性,保證成批的 SQL 語句要麼全部執行,要麼全部不執行。
交易用來管理insert,update,delete 語句
一般來說,事務是必須滿足4個條件(ACID): Atomicity(原子性)、Consistency(穩定性)、Isolation (隔離性)、Durability(可靠性)
1、事務的原子性:一組事務,要麼成功;要麼撤回。
2、穩定性 :有非法資料(外鍵約束之類),交易撤回。
3、隔離性:交易獨立運作。一個事務處理後的結果,影響了其他事務,那麼其他事務會撤回。事務的100%隔離,需要犧牲速度。
4、可靠性:軟、硬體崩潰後,InnoDB資料表驅動程式會利用日誌檔案重構修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 選項 決定何時吧交易要儲存到日誌中。
php mysql 事務處理實作程式碼如下:
程式碼如下:
<?PHP $LinkID =mysql_connect('localhost:3307','root',*******); mysql_select_db('web_his',$LinkID); mysql_query("set names utf8"); /* 创建事务 */ mysql_query('START TRANSACTION') or exit(mysql_error()); $ssql1="insert into pf_item values('22','我们','30')"; //执行sql 1 if(!mysql_query($ssql1)){ echo $ssql1.mysql_errno().":".mysql_error()."<br>"; mysql_query('ROLLBACK') or exit(mysql_error());//判断当执行失败时回滚 exit; } $ssql1="insert into pf_item values('21','hell','10')"; //执行sql 2 if(!mysql_query($ssql1)){ echo $ssql1.mysql_errno().":".mysql_error()."<br>"; mysql_query('ROLLBACK') or exit(mysql_error());//判断当执行失败时回滚 exit; } mysql_query('COMMIT') or exit(mysql_error());//执行事务 mysql_close($LinkID); ?>
以上是php實作mysql事務處理的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!