標籤:
1. 事務概念引入:
現實生活中,我們往往經常會進行轉賬操作,轉賬操作可以分為兩部分來完成,轉入和轉出。只有這兩部分都完成了才可以認為是轉賬成功。在資料庫中,這個過程是使用兩條語句來完成的,如果其中任意一條語句出現了異常沒有執行,則會導致兩個帳號的金額不同步,造成錯誤。
為了防止上面可能出現的情況,MySQL引入了事務,所謂事務就是針對資料庫的一組操作,它可以由一條或者多條SQL語句組成,同一個事務的操作具備同步的特點,如果其中有一條語句不能執行的話,那麼所有的語句都不會執行,也就是說,事務中的語句要麼都執行,要麼都不執行。
在使用資料庫時候需要使用事務,必須先開啟事務,開啟事務的語句具體如下:
start transaction;
即:
上面語句是用來開啟事務,事務開啟之後就可以執行SQL語句,SQL語句執行成功之後,需要使用相應語句提交事務,提交事務的語句如下:
commit;
需要注意的是,在MySQL中直接書寫的SQL語句都是自動認可的,而事務中的動作陳述式需要使用commit語句手動提交,只有事務提交後其中的操作才會生效。
如果不想提交事務,我們還可以使用相關語句取消事務(也稱復原),具體語句如下:
rollback;
需要注意的是,rollback語句只能針對未提交的事務執行的復原操作,已經提交的事務是不能復原的。
2. 相信通過上面的講解,我們對事務有了一個簡單的瞭解,接下來我們通過一個轉賬的案例示範如何使用事務。
(1)示範之前準備工作:
具體SQL語句如下:
create database chapter06;use chapter06;create table account( id int primary key auto_increment, name varchar(40), money float);insert into account(name,money) values(‘a‘,1000);insert into account(name,money) values(‘b‘,1000);
執行效果如下:
(2)接下來我們使用事務來示範如何?轉賬功能:
首先開啟一個事務,然後通過update語句將 a賬戶的100元 轉給 b 賬戶,然後最後提交事務,具體語句如下:
start transaction;update account set money=money-100 where name=‘a‘;update account set money=money+100 where name=‘b‘;commit;
執行效果如下:
事務操作具有嚴格的定義,它必須滿足4個特性:
1)原子性
2)一致性
3)隔離性
4)持久性
MySQL(20):交易管理