1、概念 2、事務的acid屬性: 3、MySQL事務隔離級別 4、SQL的事務模式 4.1顯示事務 4.2隱式事務 ...
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的事務模式
事務分類:
- 顯式事務:用begin transaction明確指定事務的開始。
- 隱性事務:打開隱性事務:set implicit_transactions on,當以隱性事務模式操作時,SQL Servler將在提交或回滾事務後自動啟動新事務。無法描述事務的開始,只需要提交或回滾事務。
- 自動提交事務: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