數據庫事務是什么,數據庫---事務(一)

 2023-10-15 阅读 17 评论 0

摘要:什么是事務 在mysql事務就是最小不可分割的工作單元,事務能夠保證業務的完整性。要么都執行,要么都不執行,不允許執行一部分。 為什么需要事務呢? 數據庫事務是什么,假設一個場景:A給B轉賬100,此時A-100,B+100,

什么是事務

在mysql事務就是最小不可分割的工作單元,事務能夠保證業務的完整性。要么都執行,要么都不執行,不允許執行一部分。

為什么需要事務呢?

數據庫事務是什么,假設一個場景:A給B轉賬100,此時A-100,B+100,如果現在只發生A-100的操作,沒有發生B+100,則會出數據前后不一致性。

在數據庫中,我們操作多條sql語句,使用事務時會產生同時失敗,或者同時成功,這樣結果使得產生的數據一致性。

mysql如何控制事務

mysql默認開啟事務。使得我們我們在執行一個sql語句時,效果立馬體現出來,產生的數據不能回滾(不能撤銷操作)。
select @@autocommit;用于查看默認事務的提交狀態,為1則是默認提交,為0則需要手動提交。
在這里插入圖片描述
我們創建一個uers表。
在這里插入圖片描述
我們往該表中插入元素。
在這里插入圖片描述
但是有時候我們希望語句執行后,能夠撤銷到上一層,這是我們使用rollback回滾語句。
在這里插入圖片描述
但是我們發現現在使用rollback并不能回滾數據,這是由于sql事務是默認提交的,但提交了就不能回滾,如果我們還需要回滾,則需要先將默認提交給關閉。
這時我們需要set outcommit = 0關閉mysql自動提交。
在這里插入圖片描述
實例:
在這里插入圖片描述

什么時候使用、因為上面我們將默認提交給關閉了,所以現在我們使用回滾語句。
在這里插入圖片描述
當使用回滾語句后,我們發現剛插入的數據撤銷了,底層到底是怎么實現的呢?
在這里插入圖片描述

我們將事務的默認提交方式給關閉了,實際上insert是將數據插入到一個拷貝出來的虛表中,在數據庫中實際上是不存在的,因此我們使用rollback回滾的其實是一個虛表。
當我們把默認提交關閉后,還需要將數據寫入到數據庫中,這是我們需要將數據進行手動提交,在insert語句后面,加上commit,手動提交的方法。
在這里插入圖片描述
在實際情況中,數據庫事務是默認提交的,因此是不能回滾的,但是我們如果想要進行回滾,則需要在執行sql語句前執行begin或者start transaction。

在這里插入圖片描述
在這里插入圖片描述
默認關閉提交,我們需要使用begin,start transaction語句。
在這里插入圖片描述
因此,begin與start transaction語句作用時間只能回滾一次,多次回滾需要執行多次begin與start transaction語句。
如果,使用begin語句想要寫入到數據庫中,則需要在最后使用commit寫入數據庫中。

在這里插入圖片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/140469.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息