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事務 行級鎖 併發 二.乙個事務是乙個連續的一組資料庫操作,就好像它是乙個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單...