MySQL的savepoint簡介及實例
寫在前面
本文看下MySQL的savepoint相關內容。
1:什么是savepoint
savepoint是事務中一個概念,允許在事務執(zhí)行的過程中暫存事務執(zhí)行到當前所產生的修改,這樣當我們需要回滾事務時就可以選擇回滾到某個保存點,而不用回滾整個事務。語法格式如下:
生成一個savepoint: SAVEPOINT the_savepoint_name 回滾事務到某個savepoint: ROLLBACK [WORK] TO [SAVEPOINT] the_savepoint_name 釋放暫存點: RELEASE SAVEPOINT the_savepoint_name
2:實例
如下表:
mysql> select * from words where id in (1,2); +----+------+ | id | word | +----+------+ | 1 | aaaa | | 2 | aaab | +----+------+ 2 rows in set (0.00 sec)
接下來我們分別對id為1,2的word都拼加字符串hi
,并分別生成保存點,最終回滾到id為1的修改保存點,并提交事務,因此最終只有id=1的word會追加hi
成功,操作如下:
mysql> start transaction with consistent snapshot; Query OK, 0 rows affected (0.00 sec) mysql> update words set word=concat(word,'hi') where id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> savepoint sp_id_1; // 生成第一個暫存點 Query OK, 0 rows affected (0.00 sec) mysql> update words set word=concat(word,'hi') where id=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> savepoint sp_id_2; // 生成第二個暫存點 Query OK, 0 rows affected (0.00 sec) mysql> rollback to savepoint sp_id_1; // 回滾到第一個暫存點,則第一個暫存點之后的所有修改都會被回滾,但第一個暫存點之前的修改回被保留 Query OK, 0 rows affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.06 sec) mysql> select * from words where id in (1,2); +----+--------+ | id | word | +----+--------+ | 1 | aaaahi | | 2 | aaab | +----+--------+ 2 rows in set (0.00 sec)
可以看到最終只要id=1的word值成功追加了hi
。
寫在后面
參考文章列表
到此這篇關于MySQL的savepoint簡介及實例的文章就介紹到這了,更多相關MySQL savepoint內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL?中的?SQL_MODE?設置方法ANSI_QUOTES?選項解析與應用小結
sql_mode是?MySQL?中的一個系統(tǒng)變量,用于控制?SQL?語句的解析和執(zhí)行方式,它由多個選項組成,每個選項都可以獨立設置,以滿足不同的應用場景需求,這篇文章主要介紹了MySQL?中的?SQL_MODE?設置:ANSI_QUOTES?選項解析與應用2024-12-12Windows XP系統(tǒng)安裝MySQL5.5.28圖解教程
很多朋友在winxp系統(tǒng)中開發(fā)php等,需要安裝mysql數據庫,這里簡單介紹下,如何在xp下安裝mysql軟件,其實跟其它系統(tǒng)都差不多,主要是軟件對系統(tǒng)的兼容性2013-05-05