SQL中事務的隔離級別

2021-05-23 02:45:06 字數 2101 閱讀 9432

sql server隔離 收藏

sql server隔離語句如下:

set transaction isolation level

{ read uncommitted

| read committed

| repeatable read

| snapshot

| serializable

一次只能設定乙個隔離級別選項,而且設定的選項將一直對那個連線始終有效,直到顯式更改該選項為止。事務中執行的所有讀取操作都會在指定的隔離級別的規則下執行,除非語句的 from 子句中的表提示為表指定了其他鎖定行為或版本控制行為。

事務從乙個隔離級別更改為另乙個隔離級別時的鎖定行為如下表:

read uncommitted read uncomitted:

未更改。

read committed:

該行為取決於 read_committed_snapshot 資料庫選項的設定:

如果為 off,事務將獲取共享鎖,並在讀取期間保留鎖。

如果為 on,事務會使用行版本控制。

snapshot:

事務必須已作為 snapshot 啟動。事務將會失敗,並將回滾所有更改。

repeatable read:

現在該事務將獲取共享鎖,並在事務期間保留鎖。

serializable:

現在該事務將獲取範圍鎖,並在事務期間保留鎖。

read committed read uncomitted:

事務不再獲取用於讀取操作的鎖。

read committed:

未更改。

snapshot:

事務必須已作為 snapshot 啟動。事務將會失敗,並將回滾所有更改。

repeatable read:

現在該事務將獲取共享鎖,並在事務期間保留鎖。

serializable:

現在該事務將獲取範圍鎖,並在事務期間保留鎖。

snapshot read uncomitted:

事務不再使用行版本控制,並且不再獲取用於讀取操作的鎖。

read committed:

該行為取決於 read_committed_snapshot 資料庫選項的設定:

如果為 off,事務將獲取共享鎖,並在讀取期間保留鎖。

如果為 on,事務會使用行版本控制。

snapshot:

未更改。

repeatable read:

該事務不再使用行版本控制。現在它獲取了共享鎖,並在事務執行期間一直保持該鎖。

serializable:

該事務不再使用行版本控制。現在它獲取了範圍鎖,並在事務執行期間一直保持該鎖

repeatable read read uncomitted:

該事務在讀取操作時不再獲取鎖。在 repeatable read 下獲取的共享鎖保留到事務結束。

read committed:

該行為取決於 read_committed_snapshot 資料庫選項的設定:

如果為 off,事務將獲取共享鎖,並在讀取期間保留這些新鎖。

如果為 on,事務會使用行版本控制。

在 repeatable read 下獲取的共享鎖保留到事務結束。

snapshot:

事務必須已作為 snapshot 啟動。事務將會失敗,並將回滾所有更改。

repeatable read:

未更改。

serializable:

現在該事務將獲取範圍鎖,並在事務期間保留鎖。在 repeatable read 下獲取的共享鎖保留到事務結束。

示例**如下:

use adventureworks;

goset transaction isolation level repeatable read;

gobegin transaction;

goselect *

from humanresources.employeepayhistory;

goselect *

from humanresources.department;

gocommit transaction;

go

SQL 事務隔離級別

髒讀 包含未提交資料的讀。例如,事務1 更改了某行。事務2 在事務1 提交更改之前讀取已更改的行。如果事務1 回滾更改,則事務2 便讀取了邏輯上從未存在過的行。不可重複讀取 當某個事務不止一次讀取同一行,並且乙個單獨的事務在兩次 或多次 讀取之間修改該行時。因為在同乙個事務內的多次讀取之間修改了該行...

SQL 隔離級別與事務

前言 事物 事物是指一組原子性的sql查詢。如 銀行轉賬 a要轉賬給b100,在資料庫中至少三步 1.a的賬戶查詢餘額大於100,2.a賬戶減少100,3.b的賬戶要增加100這樣這個事物才算真的完成,這裡的幾條sql語句應該一起完成或者失敗,失敗就會發生回滾,成功則提交事務。隔離 隔離的產生主要是...

事務的隔離級別舉例 事務的隔離級別

乙個事務是乙個完整的業務邏輯單元,不能再分,要麼全部執行成功,要麼全部失敗。比如 a給b轉賬100元,a的銀行卡就會少100元,b的銀行卡就會多100元,整個過程要麼全部執行成功,要麼全部失敗。a 原子性。事務是最小的業務邏輯單元。b 一致性。乙個事務必須保證多條dml語句同時成功或失敗。c 隔離性...