MySQL事務部分復原-復原到指定儲存點

來源:互聯網
上載者:User

標籤:http   ar   資料   html   sp   on   ef   c   htm   

我們可以在mysql交易處理過程中定義儲存點(SAVEPOINT),然後復原到指定的儲存點前的狀態。

定義儲存點,以及復原到指定儲存點前狀態的文法如下。

  1. 定義儲存點---SAVEPOINT 儲存點名;
  2. 復原到指定儲存點---ROLLBACK TO SAVEPOINT 儲存點名:

下面示範將向表user中連續插入3條資料,在插入第2條資料的後面定義一個儲存點,最後看看能否復原到此儲存點。

1、查看user表中的資料

  1. mysql> select * from user;
  2. +-----+----------+-----+------+
  3. | mid | name | scx | word |
  4. +-----+----------+-----+------+
  5. | 1 | zhangsan | 0 | NULL |
  6. | 2 | wangwu    | 1 | NULL |
  7. +-----+----------+-----+------+
  8. 2 rows in set (0.05 sec)

2、mysql事務開始

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

3、向表user中插入2條資料

  1. mysql> INSERT INTO user VALUES (‘3‘,‘one‘,‘0‘,‘‘);
  2. Query OK, 1 row affected (0.08 sec)
  3. mysql> INSERT INTO user VALUES (‘4,‘two‘,‘0‘,‘‘);
  4. Query OK, 1 row affected (0.00 sec)
  5. mysql> select * from user;
  6. +-----+----------+-----+------+
  7. | mid | name | scx | word |
  8. +-----+----------+-----+------+
  9. | 1 | zhangsan | 0 | NULL |
  10. | 2 | wangwu    | 1 | NULL |
  11. | 3 | one            | 0 | |
  12. | 4 | two             | 0 | |
  13. +-----+----------+-----+------+
  14. 4 rows in set (0.00 sec)

4、指定儲存點,儲存點名為test

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

5、向表user中插入第3條資料

  1. mysql> INSERT INTO user VALUES (‘5‘,‘three‘,‘0‘,‘‘);
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> select * from user;
  4. +-----+----------+-----+------+
  5. | mid | name | scx | word |
  6. +-----+----------+-----+------+
  7. | 1 | zhangsan | 0 | NULL |
  8. | 2 | wangwu | 1 | NULL |
  9. | 3 | one | 0 | |
  10. | 4 | two | 0 | |
  11. | 5 | three | 0 | |
  12. +-----+----------+-----+------+
  13. 5 rows in set (0.02 sec)

6、復原到儲存點test

  1. mysql> ROLLBACK TO SAVEPOINT test;
  2. Query OK, 0 rows affected (0.31 sec)
  3. mysql> select * from user;
  4. +-----+----------+-----+------+
  5. | mid | name | scx | word |
  6. +-----+----------+-----+------+
  7. | 1 | zhangsan | 0 | NULL |
  8. | 2 | wangwu    | 1 | NULL |
  9. | 3 | one            | 0 | |
  10. | 4 | two            | 0 | |
  11. +-----+----------+-----+------+
  12. 4 rows in set (0.00 sec)

我們可以看到儲存點test以後插入的記錄沒有顯示了,即成功團滾到了定義儲存點test前的狀態。利用儲存點可以實現只提交事務中部分處理的功能。

文章來源網頁編程,轉載請註明出處:http://uphtm.com/database/192.html

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.