MySQL(20):交易管理

來源:互聯網
上載者:User

標籤:

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):交易管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.