演示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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。