SQL Server 表的管理_關於事務操作的詳解(案例程式碼)

Mr.Right-w發表於2018-05-31

SQL Server 表的管理_關於事務操作的詳解(案例程式碼)

1、概念

事務(transaction):

  是將多個修改語句組合在一起的方法,這個方法中的所有語句只有全部執行才能正確完成功能。即要麼全部執行,要麼全部不執行。

2、事務的acid屬性:

  • 原子性:事務處理語句是一個整體,不可分割。Atomicity–A
  • 一致性:事務處理前後資料庫前後狀態要一致。Consistency–C
  • 分割性(隔離性):多個事務併發處理互不干擾。Isolation–I
  • 永續性:事務處理完成後,資料庫的變化將不會再改變。Durability–D

注意:在 MySQL 命令列的預設設定下,事務都是自動提交的,即執行 SQL 語句後就會馬上執行 COMMIT 操作。因此要顯式地開啟一個事務務須使用命令 BEGIN 或 START TRANSACTION,或者執行命令 SET AUTOCOMMIT=0,用來禁止使用當前會話的自動提交。

3、MySQL事務隔離級別

事務隔離級別 髒讀 不可重複讀 幻讀
讀未提交(read-uncommitted)
不可重複讀(read-committed)
可重複讀(repeatable-read)
序列化(serializable)

 

 4、SQL的事務模式

事務分類:

  1. 顯式事務:用begin transaction明確指定事務的開始。
  2. 隱性事務:開啟隱性事務:set implicit_transactions on,當以隱性事務模式操作時,SQL Servler將在提交或回滾事務後自動啟動新事務。無法描述事務的開始,只需要提交或回滾事務。
  3. 自動提交事務:SQL Server的預設模式,它將每條單獨的T-SQL語句視為一個事務。如果成功執行,則自動提交,否則回滾。

 4.1顯示事務

 T-SQL中管理事務的語句:
  1 開始事務: begin transaction
  2 提交事務:commit transaction
  3 回滾事務: rollback transaction

 案例程式碼:

begin transaction
insert into dept  values(100,`陳浩`,``,19)
save transaction sp1;
insert into dept  values(101,`erer`,``,9)
rollback transaction sp1;
commit transaction;
--執行過程中插入第二條語句後,事務回滾到第二條資料之前,也就是第二條動作被撤銷後,
--最後提交事務後,表中只有一條資料。

4.2隱式事務

開啟關閉隱式事務的方法:

SET IMPLICIT_TRANSACTIONS ON/OFF;
set implicit_transactions on;
insert into dept values(101,`erer`,``,9)
rollbac

相關文章