使用事務處型功能時,涉及3個重要的命令BEGIN、COMMIT和ROLLBACK,它們的語法分別如下。
下面我們演示一下在事務處理中刪除表user的全部數據,然後用ROLLBACK命令看是否能恢復到事務開始前的初始狀態,具體步驟如下。
1、首先將表user的存儲引擎修改為[InnoDB] 。
2、確認表user中的數據。
3、事務開始。
4、刪除表user中的全部數據。
5、再次確認表user中的數據。
6、回滾處理.
7、確認表user中的數據是否恢復。
可以看出,最後表user中數據恢復到了初始的狀態。如果將上面的[ROLLBACK]換成[COMMIT],那麼刪除的處理就被提交,再也不可恢復,在執行[COMMIT]前還是需要最後確認一下。
文章來源uphtm.com網頁編程。轉載請注明出處:http://uphtm.com/database/183.html
$sql2 沒發現錯誤 執行成功。
這個可以分段驗證
直接 print_r($r2) 看是否真的有SQL錯誤
另外 !$r1 這種寫法是否可以判斷錯誤?
你 $r2 如果輸出錯誤 是否是 $r2 === false ? 也許是其他?
用 var_dump 查看下
所謂事務是用戶定義的一個數據庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作單位。例如,在關系數據庫中,一個事務可以是一條SQL語句、一組SQL語句或整個程序。
簡單舉個例子就是你要同時修改數據庫中兩個不同表的時候,如果它們不是一個事務的話,當第一個表修改完,可是第二表改修出現了異常而沒能修改的情況下,就只有第二個表回到未修改之前的狀態,而第一個表已經被修改完畢。
而當你把它們設定為一個事務的時候,當第一個表修改完,可是第二表改修出現了異常而沒能修改的情況下,第一個表和第二個表都要回到未修改的狀態!這就是所謂的事務回滾。