mysql 交易處理

來源:互聯網
上載者:User

標籤:自動   href   bsp   root   sql   back   value   lte   err   

知識點:

交易處理是什嗎?

當資料庫表呈樹狀機構設計時,我們對一個表進行增、刪、改的操作,可能會要求對另外的表進行相同的操作,為了保證這多個sql能同時執行成功,就要使用mysql的交易處理。

注意:只有增刪改的操作可以進行復原,alter等操作不可行!

事務特性:

1、原子性:所有的sql執行操作必須全部成功,否則則復原到處理前狀態

2、一致性: 確保資料庫正確地改變狀態後,成功提交的事務。

3、隔離性: 使事務操作彼此獨立的和透明的。

4、持久性: 確保提交的事務的結果或效果的系統出現故障的情況下仍然存在。

目前mysql支援的交易處理的有兩種引擎,基本上大家都在使用innodb引擎,注意,所有進行sql操作交易處理的表都必須是innodb引擎。

關鍵詞1:commit,當交易處理是成功的時候,進行交易處理sql的提交工作

關鍵詞2:rollback,當其中有一個sql執行操作有誤時,進行復原,此操作將會將所有被操作的資料庫表復原到之前的狀態。

關鍵詞3:start trasaction, 開啟事務功能

關鍵詞4 :autocommit,自動認可,如果為0則關閉,如果為1則開啟,所以使用時需要將它賦值為0(關閉),使用完後再賦值為1(重新開啟),一般mysql預設是開啟的

PHP執行交易處理代碼:

 1 $con = mysql_connect(‘localhost‘,‘root‘,‘root‘); 2 mysql_select_db("test",$con); 3 mysql_query("set names utf8"); 4 mysql_query(‘START TRANSACTION‘) or die(mysql_error());//開啟事務功能 5 $sql1 = "insert into student (name,age)values(‘xiaoming‘,‘16‘)"; 6 $sql2 = "insert into score (sid,computer,english)values(2,90,98)"; 7 if(!mysql_query($sql1)){ 8     mysql_query("ROLLBACK");//sql執行失敗則表資料復原到之前的狀態 9     echo ‘1‘;10 }11 if(!mysql_query($sql2)){12     mysql_query("ROLLBACK");//sql執行失敗則表資料復原到之前的狀態13     echo ‘2‘;14 }15 16 mysql_query(‘COMMIT‘)or die(mysql_error());//執行事務

sql語句故意寫錯後,結果都不提交,交易處理是可行的

另:start transaction 等同於 set autocommit = 0 

mysql 交易處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.