演示MYSQL數據庫簡單的事務處理-刪除后回滾


使用事務處型功能時,涉及3個重要的命令BEGIN、COMMIT和ROLLBACK,它們的語法分別如下。

  1. 聲明事務處理開始---BEGIN (或者START TRANSACTION)
  2. 提交整個事務---COMMIT
  3. 回滾到事務開始的狀態---ROOLBACK

下面我們演示一下在事務處理中刪除表user的全部數據,然后用ROLLBACK命令看是否能恢復到事務開始前的初始狀態,具體步驟如下。

1、首先將表user的存儲引擎修改為[InnoDB] 。

  1. mysql> ALTER TABLE user ENGINE=Innodb;
  2. Query OK, 2 rows affected (0.20 sec)
  3. Records: 2 Duplicates: 0 Warnings: 0

2、確認表user中的數據。

  1. mysql> SELECT * FROM user \G
  2. *************************** 1. row ***************************
  3. mid: 1
  4. name: zhangsan
  5. scx: 0
  6. word: NULL
  7. *************************** 2. row ***************************
  8. mid: 2
  9. name: wangwu
  10. scx: 1
  11. word: NULL
  12. 2 rows in set (0.00 sec)

3、事務開始。

  1. mysql> BEGIN;
  2. Query OK, 0 rows affected (0.00 sec)

4、刪除表user中的全部數據。

  1. mysql> DELETE FROM user;
  2. Query OK, 2 rows affected (0.00 sec)

5、再次確認表user中的數據。

  1. mysql> SELECT * FROM user \G
  2. Empty set (0.00 sec)

6、回滾處理.

  1. mysql> ROLLBACK;
  2. Query OK, 0 rows affected (0.36 sec)

7、確認表user中的數據是否恢復。

  1. mysql> SELECT * FROM user \G
  2. *************************** 1. row ***************************
  3. mid: 1
  4. name: zhangsan
  5. scx: 0
  6. word: NULL
  7. *************************** 2. row ***************************
  8. mid: 2
  9. name: wangwu
  10. scx: 1
  11. word: NULL
  12. 2 rows in set (0.00 sec)

可以看出,最后表user中數據恢復到了初始的狀態。如果將上面的[ROLLBACK]換成[COMMIT],那么刪除的處理就被提交,再也不可恢復,在執行[COMMIT]前還是需要最后確認一下。

文章來源uphtm.com網頁編程。轉載請注明出處:http://uphtm.com/database/183.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM