MySQL的savepoint簡(jiǎn)介及實(shí)例
寫(xiě)在前面
本文看下MySQL的savepoint相關(guān)內(nèi)容。
1:什么是savepoint
savepoint是事務(wù)中一個(gè)概念,允許在事務(wù)執(zhí)行的過(guò)程中暫存事務(wù)執(zhí)行到當(dāng)前所產(chǎn)生的修改,這樣當(dāng)我們需要回滾事務(wù)時(shí)就可以選擇回滾到某個(gè)保存點(diǎn),而不用回滾整個(gè)事務(wù)。語(yǔ)法格式如下:
生成一個(gè)savepoint: SAVEPOINT the_savepoint_name 回滾事務(wù)到某個(gè)savepoint: ROLLBACK [WORK] TO [SAVEPOINT] the_savepoint_name 釋放暫存點(diǎn): RELEASE SAVEPOINT the_savepoint_name
2:實(shí)例
如下表:
mysql> select * from words where id in (1,2); +----+------+ | id | word | +----+------+ | 1 | aaaa | | 2 | aaab | +----+------+ 2 rows in set (0.00 sec)
接下來(lái)我們分別對(duì)id為1,2的word都拼加字符串hi
,并分別生成保存點(diǎn),最終回滾到id為1的修改保存點(diǎn),并提交事務(wù),因此最終只有id=1的word會(huì)追加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; // 生成第一個(gè)暫存點(diǎn) 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; // 生成第二個(gè)暫存點(diǎn) Query OK, 0 rows affected (0.00 sec) mysql> rollback to savepoint sp_id_1; // 回滾到第一個(gè)暫存點(diǎn),則第一個(gè)暫存點(diǎn)之后的所有修改都會(huì)被回滾,但第一個(gè)暫存點(diǎn)之前的修改回被保留 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
。
寫(xiě)在后面
參考文章列表
MySQL 基礎(chǔ) ———— SAVEPOINT 的應(yīng)用 。
到此這篇關(guān)于MySQL的savepoint簡(jiǎn)介及實(shí)例的文章就介紹到這了,更多相關(guān)MySQL savepoint內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中定時(shí)器的底層實(shí)現(xiàn)原理及使用方法
定時(shí)器可以用于定期執(zhí)行特定的SQL語(yǔ)句、備份數(shù)據(jù)、生成報(bào)表等操作,本文將詳細(xì)介紹MySQL中定時(shí)器的底層實(shí)現(xiàn)機(jī)制以及如何使用它2023-07-07MySQL?中的?SQL_MODE?設(shè)置方法ANSI_QUOTES?選項(xiàng)解析與應(yīng)用小結(jié)
sql_mode是?MySQL?中的一個(gè)系統(tǒng)變量,用于控制?SQL?語(yǔ)句的解析和執(zhí)行方式,它由多個(gè)選項(xiàng)組成,每個(gè)選項(xiàng)都可以獨(dú)立設(shè)置,以滿(mǎn)足不同的應(yīng)用場(chǎng)景需求,這篇文章主要介紹了MySQL?中的?SQL_MODE?設(shè)置:ANSI_QUOTES?選項(xiàng)解析與應(yīng)用2024-12-12Windows XP系統(tǒng)安裝MySQL5.5.28圖解教程
很多朋友在winxp系統(tǒng)中開(kāi)發(fā)php等,需要安裝mysql數(shù)據(jù)庫(kù),這里簡(jiǎn)單介紹下,如何在xp下安裝mysql軟件,其實(shí)跟其它系統(tǒng)都差不多,主要是軟件對(duì)系統(tǒng)的兼容性2013-05-05MySQL 分區(qū)與分庫(kù)分表策略應(yīng)用小結(jié)
在大數(shù)據(jù)量、復(fù)雜查詢(xún)和高并發(fā)的應(yīng)用場(chǎng)景下,單一數(shù)據(jù)庫(kù)往往難以滿(mǎn)足性能和擴(kuò)展性的要求,本文將詳細(xì)介紹這兩種策略的基本概念、實(shí)現(xiàn)方法及優(yōu)缺點(diǎn),并通過(guò)實(shí)際案例展示如何在項(xiàng)目中應(yīng)用它們,感興趣的朋友一起看看吧2025-04-04基于mysql實(shí)現(xiàn)group by取各分組最新一條數(shù)據(jù)
這篇文章主要介紹了基于mysql實(shí)現(xiàn)group by取各分組最新一條數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09自學(xué)MySql內(nèi)置函數(shù)知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于MySql內(nèi)置函數(shù)的知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-01-01