新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
mysql事務(wù)管理的用法
這篇文章主要講解了MySQL事務(wù)管理的用法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
在瀾滄等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需求定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,外貿(mào)網(wǎng)站制作,瀾滄網(wǎng)站建設(shè)費用合理。
什么是事務(wù)管理:
- 可以把一系列要執(zhí)行的操作稱為事務(wù),而事務(wù)管理就是管理這些操作要么完全執(zhí)行,要么完全不執(zhí)行(很經(jīng)典的一個例子是:A要給B轉(zhuǎn)錢,首先A的錢減少了,但是突然的數(shù)據(jù)庫斷電了,導(dǎo)致無法給B加錢,然后由于丟失數(shù)據(jù),B不承認收到A的錢;在這里事務(wù)就是確保加錢和減錢兩個都完全執(zhí)行或完全不執(zhí)行,如果加錢失敗,那么不會發(fā)生減錢)。
- 事務(wù)管理的意義:保證數(shù)據(jù)操作的完整性。
- mysql中并不是所有的數(shù)據(jù)引擎都支持事務(wù)管理的,只有innodb支持事務(wù)管理。
事務(wù)管理的特性:
- 原子性:事務(wù)的整個操作是一個整體,不可以分割,要么全部成功,要么全部失敗。
- 一致性:事務(wù)操作的前后,數(shù)據(jù)表中的數(shù)據(jù)沒有變化。
- 隔離性:事務(wù)操作是相互隔離不受影響的。
- 持久性:數(shù)據(jù)一旦提交,不可改變,永久的改變數(shù)據(jù)表數(shù)據(jù)。
事務(wù)管理操作:
- 開啟事務(wù)管理:開啟之后,下面的sql語句并不會馬上執(zhí)行并把結(jié)果寫到表中,而是會寫到事務(wù)日志中。
- start transaction;
- 回退操作:回退會清掉開始事務(wù)管理之后寫到事務(wù)日志中的內(nèi)容,即恢復(fù)到開啟事務(wù)管理之前。
- 語法:rollback;
- 注意:回退操作只是回退"寫"的內(nèi)容,對于普通的讀表select語句不能回退。
- 事務(wù)提交:將sql語句的結(jié)果寫到數(shù)據(jù)表中。
- 語法:commit:
實驗表:
create table bankaccount(id int primary key auto_increment,name varchar(15),money int); insert into bankaccount(name,money) values("Jobs",2000); insert into bankaccount(name,money) values("Bill",3000);
補充:
- 當(dāng) commit 或 rollback 語句執(zhí)行后,事務(wù)會自動關(guān)閉(將來的更改會隱含提交)。
- 鎖機制:在事務(wù)操作一個表時,如果使用索引來取值,那么會鎖定到對應(yīng)行;如果沒有使用索引來取值,那么會鎖定整個表。鎖定之后其他連接無法操作指定行或表。
回滾點:
- 回滾點可以指定rollback回退的位置【比如現(xiàn)在打了100條命令,發(fā)現(xiàn)第81打錯了,如果回滾到打了81命令之前一點而不是回滾到開啟事務(wù)之前就可以節(jié)省下很多時間。】
- 語法:
- 創(chuàng)建回滾點:savepoint 回滾點名;
- 回滾到回滾點:rollback to 回滾點名;
補充:
- 回滾點在事務(wù)管理關(guān)閉(rollback或commit之后)之后失效,不要在事務(wù)之外使用回滾點。
默認的事務(wù)管理:
- 默認情況下,mysql的事務(wù)管理是關(guān)閉(自動事務(wù))的,語句的結(jié)果會馬上寫到數(shù)據(jù)表中。
- 可以通過show variable like 'autocommit';來查看是否開啟自動事務(wù),值為1為自動事務(wù)已開啟,為0則為關(guān)閉。
- 關(guān)閉自動事務(wù):set autocommit =0;【關(guān)閉后需要commit來執(zhí)行每一條語句,相當(dāng)于開始了事務(wù)管理】
- 不過注意的是set autocommit針對的是會話變量,所以這個設(shè)置只在此次會話連接中生效。
看完上述內(nèi)容,是不是對mysql事務(wù)管理的用法有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞標題:mysql事務(wù)管理的用法
分享URL:http://www.ef60e0e.cn/article/gopdsc.html