MySQL中的事務

2021-10-10 10:18:20 字數 2112 閱讀 9839

mysql事務

1.什麼是事務:是將一組sql語句放在同一批次內去執行,如果乙個sql語句出現了錯誤,則該批次內所有的sql都將被取消執行。

mysql事務只支援innodb和bdb資料表型別

2.事物的特性

必須具備四個屬性原則-簡稱acid屬性 包括原子性、一致性、隔離性、永續性 。

a-原子性:事務是最小的單元 不可再拆分

c-一致性:事務要求所有的dml語句必須保證同時成功或者同時失敗

i-隔離性:事務與事務之間執行具有隔離

d-永續性:事務的保證,事務終結的標誌(資料持久的儲存到硬碟檔案中)

3.語法-使用set語句來改變自動提交模式

set autocommit :mysql中預設自動提交,使用事務時應該先關閉自動提交

start transaction:開始乙個事務,標記事務的起始點

commit:提交乙個事務給資料庫

rollback:將事務回滾,資料回到本次事務的初始狀態

set autocommit=1:開啟mysql資料庫的自動提交

處理過程:

a.set autocommit=0關閉自動提交

b.start transaction開始乙個事務,標記事務的起始點

c.commit提交乙個事務給資料庫 如果提交失敗則rollback將事務回滾,所有commit中的操作將取消

d.set autocommit=1還原mysql資料庫的自動提交

# 演示案例:a網上購買500元某物,銀行卡餘額2000,向賣家b支付,b餘額1000

-- 建立資料庫shop和表account 並新增2條資料

create

database

ifnot

exists shop;

use shop;

create

table

ifnot

exists account(

id int(11

)not

null

auto_increment

, name varchar(20

)not

null

, cash decimal(9

,2)not

null

,primary

key(id)

)engine

=innodb

;-- 新增語句

insert

into account(

`name`

,cash)

values

('a'

,2000);

insert

into account(

`name`

,cash)

values

('b'

,1000);

select

*from account;

-- 事務的處理

set autocommit =0;

start

transaction

;update account set cash=cash-

500where

`name`

='a'

;update account set cash=cash+

500where

`name`

='b'

;commit

;set autocommit =1;

select

*from account;

名稱

解釋命令

ddl定義資料語言

定義和管理資料物件,比如資料庫,資料表等

create,drop,alter

dml資料操作語言

用於運算元據庫物件中所有包含的資料

insert ,delete,update

dql資料查詢語言

用於查詢資料庫的資料

select

dcl資料控制語言

用於管理資料庫的語言,包括管理許可權以及資料更改

commit,rollback,grant

mysql中事務的特性 mysql中事務的四大特性

原子性 atomicity 事務就像 原子 一樣,不可被分割,組成事務的dml操作語句要麼全成功,要麼全失敗,不可能出現部分成功部分失敗的情況。一致性 consistency 一旦事務完成,不管是成功的,還是失敗的,整個系統處於資料一致的狀態。隔離性 isolation 乙個事務的執行不會被另乙個事...

mysql中的事務和鎖 MySQL中的事務和鎖

鎖 行級鎖select for update nowaitfalse,skip false 注意必須用在事物裡面 所有匹配的行將被鎖定,知道事務結束。這意味著可以通過鎖防止資料被其他事務修改。一般情況下如果其他事務鎖定了相關行,那麼本查詢將被阻塞,直到鎖被釋放。事務事務的四大特性 1.原子性 事務包...

MySql中的事務

一.mysql的事務支援不是繫結在mysql伺服器本身,而是與儲存引擎相關 1.myisam 不支援事務,用於唯讀程式提高效能 2.innodb 支援acid事務 行級鎖 併發 二.乙個事務是乙個連續的一組資料庫操作,就好像它是乙個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單...