最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL基礎(chǔ)教程之事務(wù)異常情況

 更新時間:2022年10月29日 09:02:56   作者:木木止月  
事務(wù)(Transaction)是訪問和更新數(shù)據(jù)庫的程序執(zhí)行單元;事務(wù)中可能包含一個或多個sql語句,這些語句要么都執(zhí)行,要么都不執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)教程之事務(wù)異常情況的相關(guān)資料,需要的朋友可以參考下

測試異常情況

-- 1. 查詢張三余額
select * from account where name = '張三';
-- 2. 張三的余額減少1000
update account set money = money - 1000 where name = '張三';
出錯了....
-- 3. 李四的余額增加1000
update account set money = money + 1000 where name = '李四';
  • 我們把數(shù)據(jù)都恢復(fù)到2000, 然后再次一次性執(zhí)行上述的SQL語句(出錯了.... 這句話不符合SQL語 法,執(zhí)行就會報錯),檢查最終的數(shù)據(jù)情況, 發(fā)現(xiàn)數(shù)據(jù)在操作前后不一致了。

控制事務(wù)一

查看/設(shè)置事務(wù)提交方式

SELECT @@autocommit ;
SET @@autocommit = 0 ;

提交事務(wù)

COMMIT;

回滾事務(wù)

ROLLBACK;

注意:

上述的這種方式,我們是修改了事務(wù)的自動提交行為, 把默認的自動提交修改為了手動提 交, 此時我們執(zhí)行的DML語句都不會提交, 需要手動的執(zhí)行commit進行提交。

控制事務(wù)二

開啟事務(wù)

START TRANSACTION 或 BEGIN ;

提交事務(wù)

COMMIT;

回滾事務(wù)

ROLLBACK;

轉(zhuǎn)賬案例:

-- 開啟事務(wù)
start transaction
-- 1. 查詢張三余額
select * from account where name = '張三';
-- 2. 張三的余額減少1000
update account set money = money - 1000 where name = '張三';
-- 3. 李四的余額增加1000
update account set money = money + 1000 where name = '李四';
-- 如果正常執(zhí)行完畢, 則提交事務(wù)
commit;
-- 如果執(zhí)行過程中報錯, 則回滾事務(wù)
-- rollback;

事務(wù)四大特性

  • 原子性(Atomicity):事務(wù)是不可分割的最小操作單元,要么全部成功,要么全部失敗。
  • 一致性(Consistency):事務(wù)完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。
  • 隔離性(Isolation):數(shù)據(jù)庫系統(tǒng)提供的隔離機制,保證事務(wù)在不受外部并發(fā)操作影響的獨立環(huán)境下運行。
  • 持久性(Durability):事務(wù)一旦提交或回滾,它對數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久的。上述就是事務(wù)的四大特性,簡稱ACID。

補充:Mysql 事務(wù)并發(fā)處理的三種異常

臟讀(Dirty Read)【一個事務(wù)可能讀取到另一個事務(wù)更新但未提交的數(shù)據(jù),這個數(shù)據(jù)有可能是臟數(shù)據(jù)】

不可重復(fù)讀(Nnrepeatable Read)【事務(wù)不可重復(fù)讀同一條記錄,因為很可能讀到的結(jié)果不一致】

幻讀(Phantom Read)【幻讀就是沒有讀到的記錄,以為不存在,但其實是可以更新成功的,并且,更新成功后,再次讀取,就出現(xiàn)了?!?/p>

A1訪問數(shù)據(jù)庫,正在進行事務(wù),往表B里加入一條記錄,但是還未提交該事務(wù),此時A2也去訪問數(shù)據(jù)庫了,這個時候,A2可以看到A1加入的數(shù)據(jù),這種現(xiàn)象就是臟讀。

A2訪問數(shù)據(jù)庫查看id=1的數(shù)據(jù),這個時候A1訪問數(shù)據(jù)庫,開始了一個事務(wù),更新了id=1的數(shù)據(jù),且沒有提交。然后A2又去訪問數(shù)據(jù)庫查看id=1的數(shù)據(jù),看到的數(shù)據(jù)跟第一次看到的數(shù)據(jù)不一樣,而是A1更新的數(shù)據(jù),這種現(xiàn)象就是不可重復(fù)讀。

A2訪問數(shù)據(jù)庫,查看B表里的全部數(shù)據(jù)。這個時候A1又往B表里加一條記錄,開始了事務(wù)但是還未提交。這個時候A2又去查看了一下,就出現(xiàn)了A1加進去的但還未提交的數(shù)據(jù),這種現(xiàn)象就是幻讀。

總結(jié)

到此這篇關(guān)于MySQL基礎(chǔ)教程之事務(wù)異常情況的文章就介紹到這了,更多相關(guān)MySQL事務(wù)異常情況內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL Order By語法介紹

    MySQL Order By語法介紹

    今天在使用ORDER BY的過程中出現(xiàn)了一點問題,發(fā)現(xiàn)之前對ORDER BY理解是錯誤的
    2012-07-07
  • MySQL 觸發(fā)器(TRIGGER)的具體使用

    MySQL 觸發(fā)器(TRIGGER)的具體使用

    本文主要介紹了MySQL 觸發(fā)器(TRIGGER)的具體使用,包含INSERT 觸發(fā)器,UPDATE觸發(fā)器和DELETE觸發(fā)器這三種,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • MySQL索引的一些常見面試題大全(2022年)

    MySQL索引的一些常見面試題大全(2022年)

    索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),是對表中一列或多列值進行排序的結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于MySQL索引的一些常見面試題,文中介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • SQL深入探究存儲的過程

    SQL深入探究存儲的過程

    存儲過程是事先經(jīng)經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段SQL語句的集合,調(diào)用存儲過程可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,對于高效數(shù)據(jù)處理的效率是有好處的
    2023-01-01
  • MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    本文我們將要學(xué)習(xí)的是作為刪除數(shù)據(jù)使用的?“DELETE”?語句,“DELETE”?語句是用來刪除數(shù)據(jù)的,它不能用來刪除數(shù)據(jù)表本身。刪除數(shù)據(jù)表使用的是?“DROP”?語句,而?“DELETE”?的作用只是用來刪除記錄而已
    2022-08-08
  • MySQL 觸發(fā)器定義與用法簡單實例

    MySQL 觸發(fā)器定義與用法簡單實例

    這篇文章主要介紹了MySQL 觸發(fā)器定義與用法,結(jié)合簡單實例形式總結(jié)分析了mysql觸發(fā)器的語法、原理、定義及使用方法,需要的朋友可以參考下
    2019-09-09
  • 通過兩種方式增加從庫——不停止mysql服務(wù)

    通過兩種方式增加從庫——不停止mysql服務(wù)

    現(xiàn)在生產(chǎn)環(huán)境MySQL數(shù)據(jù)庫是一主一從,由于業(yè)務(wù)量訪問不斷增大,故再增加一臺從庫。前提是不能影響線上業(yè)務(wù)使用,也就是說不能重啟MySQL服務(wù),為了避免出現(xiàn)其他情況,選擇在網(wǎng)站訪問量低峰期時間段操作
    2015-11-11
  • MySQL中主鍵與rowid的使用陷阱總結(jié)

    MySQL中主鍵與rowid的使用陷阱總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中主鍵與rowid的使用陷阱,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • mysql 一次向表中插入多條數(shù)據(jù)實例講解

    mysql 一次向表中插入多條數(shù)據(jù)實例講解

    這篇文章主要介紹了mysql 一次向表中插入多條數(shù)據(jù)實例講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論

水富县| 宜兰市| 汕尾市| 金湖县| 兴海县| 道孚县| 田东县| 九龙城区| 姜堰市| 道孚县| 西乌| 明溪县| 绵竹市| 牡丹江市| 咸丰县| 东兰县| 广平县| 长丰县| 阿拉善盟| 栾川县| 星子县| 化德县| 高台县| 曲靖市| 富平县| 马尔康县| 饶阳县| 彩票| 固原市| 腾冲县| 东安县| 新和县| 东台市| 韶山市| 汉沽区| 广元市| 临沧市| 西盟| 泰安市| 庆城县| 教育|