MYSQL中預設隱式事務及利用事務DML

2021-08-31 10:09:45 字數 1320 閱讀 6389

一:預設情況下,mysql採用autocommit模式執行。這意味著,當您執行乙個用於更新(修改)表的語句之後,mysql立刻把更新儲存到磁碟中。預設級別為不可重複讀。

二:會造成隱式提交的語句

以下語句(以及同義詞)均隱含地結束乙個事務,似乎是在執行本語句前,您已經進行了乙個commit。

(1)alter function, alter procedure, alter table, begin, create database, create function, create index, create procedure, create table, drop database, drop function, drop index, drop procedure, drop table, load master data, lock tables, rename table, set autocommit=1, start transaction, truncate table, unlock tables.

(2) 當當前所有的表均被鎖定時,unlock tables可以提交事務。

(3) create table, create database drop database, truncate table, alter function, alter procedure, create function, create procedure, drop function和drop procedure等語句會導致乙個隱含提交。

(4) innodb中的create table語句被作為乙個單一事務進行處理。這意味著,來自使用者的rollback不會撤銷使用者在事務處理過程中建立的create table語句。

事務不能被巢狀。這是隱含commit的結果。當您發布乙個start transaction語句或其同義詞時,該commit被執行,用於任何當前事務。

三:利用事務dml:

1.set autocommit =

2.使用start transaction,autocommit仍然被禁用,直到您使用commit或rollback結束事務為止。然後autocommit模式恢復到原來的狀態。

3.您也可以按照如下方法開始一項事務:

start transaction with consistent snapshot;

with consistent snapshot子句用於啟動乙個一致的讀取,用於具有此類功能的儲存引擎。目前,該子句只適用於innodb。該子句的效果與發布乙個start transaction,後面跟乙個來自任何innodb表的select的效果一樣。此稱為「非一致的非鎖定讀取」

mysql事務中ddl語句的隱式提交

1 當執行到ddl語句時,會隱式的將當前回話的事務進行一次 commit 操作,因此在mysql中執行ddl語句時,應該嚴格地將ddl和dml完全分開,不能混合在一起執行。2 為什麼ddl語句會隱式提交?因為ddl是資料定義語言,在我們的資料庫中承擔著建立,刪除和修改的重要的職責。一旦發生問題,帶來...

mysql 關閉隱式轉換 Mysql中的隱式轉換

在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引,下面分析兩種隱式轉換的情況看表結構phone為int型別,name為varchar型別 兩種情況都可以用到索引,這次等號右側是 2 注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但因為...

mysql日期隱式轉換 mysql中的隱式轉換

什麼隱式型別轉換?在mysql中 當操作符與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。則會發生轉換隱式 也就是說,mysql會根據需要自動將數字轉換為字串,將字串轉換數字。看到這個概念之後,是不是有一種茅塞頓開的感覺。哦.原來在資料結構中telephone欄位為字串 varchar ...