MySQL高級之事務

1、事務

當一個業務邏輯須要多個sql完成時,若是其中某條sql語句出錯,則但願整個操做都退回mysql

使用事務能夠完成退回的功能,保證業務邏輯的正確性sql

事務四大特性(簡稱ACID)數據庫

  • 原子性(Atomicity):事務中的所有操做在數據庫中是不可分割的,要麼所有完成,要麼均不執行
  • 一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序串行執行的結果相一致
  • 隔離性(Isolation):事務的執行不受其餘事務的干擾,事務執行的中間結果對其餘事務必須是透明的
  • 持久性(Durability):對於任意已提交事務,系統必須保證該事務對數據庫的改變不被丟失,即便數據庫出現故障

要求:表的類型必須是innodb或bdb類型,才能夠對此表使用事務spa

查看錶的建立語句code

show create table students;

修改表的類型blog

alter table '表名' engine=innodb;

事務語句事務

開啓 begin;
提交 commit;
回滾 rollback;

2、示例1

  • 步驟1:打開兩個終端,鏈接mysql,使用同一個數據庫,操做同一張表
  • 終端1:
    select * from students;
    ------------------------
    終端2:
    begin;
    insert into students(sname) values('張飛');
  • 步驟2
    終端1:
    select * from students;
  • 步驟3
    終端2:
    commit;
    ------------------------
    終端1:
    select * from students;

3、示例2

  • 步驟1:打開兩個終端,鏈接mysql,使用同一個數據庫,操做同一張表
    終端1:
    select * from students;
    ------------------------
    終端2:
    begin;
    insert into students(sname) values('張飛');
  • 步驟2
    終端1:
    select * from students;
  • 步驟3
    終端2:
    rollback;
    ------------------------
    終端1:
    select * from students;
相關文章
相關標籤/搜索