標籤:自動 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 交易處理