日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 事务回滚_SQL基础丨事务处理

發(fā)布時間:2025/3/15 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 事务回滚_SQL基础丨事务处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事務的特性:ACID

MySQL5.5版本之前,默認的存儲引擎是MyISAM,在5.5版本之后默認存儲引擎是InnoDB。兩者唯一的區(qū)別就是InnoDB支持事務。

事務的英文是transaction,它是進行一次處理的基本單元,要么完全執(zhí)行,要么都不執(zhí)行。

事務的四個特性:

- 原子性(Atomicity)。原子的概念就是不可分割,是進行數據處理操作的基本單位

- 一致性(Consistency)。一致性指的就是數據庫在進行事務操作后,會由原來的一致狀態(tài),變成另一種一致的狀態(tài)。

- 隔離性(Isolation)。每個事務都是彼此獨立的,不受到其他事務的執(zhí)行影響。

- 持久性(Durability)。事務提交之后對數據的修改是持久的,即使在系統出故障的情況下,如系統崩潰或者存儲介質發(fā)生故障,數據的修改依然是有效的。

原子性是基礎,隔離性是手段,一致性是約束條件,而持久性是目的

事務的控制

事務的常用控制語句

- START TRANSACTION 或者 BEGIN,作用是顯式開啟一個事務。

- COMMIT:提交事務。當提交事務后,對數據庫的修改是永久性的。

-?ROLLBACK 或者 ROLLBACK TO?[SAVEPOINT],意為回滾事務。意思是撤銷正在進行的所有沒有提交的修改,或者將事務回滾到某個保存點。

-?SAVEPOINT:在事務中創(chuàng)建保存點,方便后續(xù)針對保存點進行回滾。一個事務中可以存在多個保存點。

- RELEASE SAVEPOINT:刪除某個保存點。

- SET TRANSACTION:設置事務的隔離級別。

使用事務的兩種方式,分別是隱式事務和顯式事務。隱式事務實際上就是自動提交,Oracle默認不自動提交,需要手寫COMMIT命令,而MySQL默認自動提交。

配置MySQL的參數

mysql>?set?autocommit?=0;??//關閉自動提交mysql> set autocommit =1; //開啟自動提交

示例

CREATE TABLE test(name varchar(255), PRIMARY KEY (name)) ENGINE=InnoDB;BEGIN;INSERT INTO test SELECT '關羽';COMMIT;BEGIN;INSERT INTO test SELECT '張飛';INSERT INTO test SELECT '張飛';ROLLBACK;SELECT * FROM test;

運行結果(1行數據)

在這個事務中,整個SQL一共執(zhí)行了2個事務,第一個是插入“關于”,提交后執(zhí)行成功,第二個是插入兩次“張飛”,這里將name設置為主鍵,也就是說主鍵的值是唯一的,那么第二次插入“張飛”時就會產生錯誤,然后執(zhí)行ROLLBACK相當于對事務進行了回滾,所以最終結果只有一行數據。也就是第一個事務執(zhí)行之后的結果。

CREATE TABLE test(name varchar(255), PRIMARY KEY (name)) ENGINE=InnoDB;BEGIN;INSERT INTO test SELECT '關羽';COMMIT;INSERT INTO test SELECT '張飛';INSERT INTO test SELECT '張飛';ROLLBACK;SELECT * FROM test;

運行結果(2行數據)

之前兩次插入“張飛”放到一個事務里,而這次操作它們不在同一個事務里,那么對于MySQL來說,默認情況下這實際上就是兩個事務,因為在autocommit=1的情況下,MySQL會進行隱式事務,也就是自動提交,因此在進行第一次插入“張飛”后,數據表里就存在了兩行數據,而第二個插入“張飛”就會報錯。

最后在執(zhí)行ROLLBACK的時候,實際上事務已經自動提交了,沒法進行回滾了。

總結

總結

以上是生活随笔為你收集整理的mysql 事务回滚_SQL基础丨事务处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。