什麼是事物?要麼都成功,要麼都失敗
比如 a卡里有 1000 塊,b 卡有500 塊
a 轉賬 100 到 b 卡
如果在轉賬的時候,只執行到一半,a 轉賬了,b 沒收到,這樣肯定是不行的
所以需要事務來保證安全性
事務原則:acid 原則隔離級別
執行事務事務處理過程關閉自動提交
開啟乙個事物
如果成功則提交
如果失敗則回滾
事務結束後,開啟自動提交
-- *****===事務*****===
-- mysql 是預設開啟事務自動提交的
set autocommit =
0/*關閉*/
set autocommit =
1/*開啟*/
-- 手動去處理事務
-- 事務開啟
start
transaction
-- 標記乙個事物,從這個之後的 sql 都在同乙個事務內
-- insert xx
-- 提交:持久化(成功!)
commit
-- 回滾: 回到原來的樣子 (失敗!)
rollback
-- 事務結束
set autocommit =
1/*開啟自動提交*/
模擬場景:銀行轉賬
-- *****=== 模擬銀行轉賬案例**********=
create
database shop character
set utf8 collate utf8_general_ci
use shop
create
table
`account`
(`id`
int(3)
notnull
auto_increment
,`name`
varchar(30
)not
null
,`money`
decimal(9
,2)not
null
,primary
key(
`id`))
engine
=innodb
default
charset
=utf8
insert
into
`account`
(`name`
,`money`
)values
('a'
,2000.00),
('b'
,10000.00
)set autocommit =
0-- 關閉自動提交
start
transaction
-- 開啟乙個事物
update
`account`
set money = money-
500where
`name`
='a'
update
`account`
set money = money+
500where
`name`
='b'
commit
;-- 提交事物
rollback
;-- 回滾
set autocommit =
1;
在實際的開發過程中,乙個業務操作如:轉賬,往往是要多次訪問資料庫才能完成的。轉賬是乙個使用者扣錢,另乙個使用者加錢。如果其中有一條 sql 語句出現異常,這條 sql 就可能執行失敗。事務執行是乙個整體,所有的 sql 語句都必須執行成功。如果其中有 1 條 sql 語句出現異常,則所有的 sql 語句都要回滾,整個業務執行失 資料庫事務特性以及隔離級別
資料庫如果支援事務的操作,那麼就具備以下四個特性 原子性 atomicity 事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。一致性 consistency 事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。隔離性 isolation ...
資料庫事務特性及隔離級別
1.原子性 atomicity 2.一致性 consistency 3.隔離性 durability 4.永續性在高併發情況下,要完成保證事務acid特性是十分困難的,除非把所有的事務序列化執行,但是因此造成的影響將是系統效能大大降低。在實際開發中很多業務對事務的要求是不一樣的,因此資料庫設計了四種...
資料庫事務特性和隔離級別
一 事務的基本要素 acid 1 原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是乙個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。2 一致性 co...