自己的事情自己干!

什么是事務

上一篇 / 下一篇  2008-12-04 17:03:20 / 个人分类:數據庫

:u9^9?#|G9w(Y0事務(transaction) 是作為單個邏輯工作單元執行的一系列操作,這些操作作為一個整體一起向系統提交,要麼都執行,要麼都不執行。事務是一個不可分割的工作邏輯單元。

EkUL+EQ"ji0

)P N1FN(U G0事務必須具備以下四個屬性:

`+a(km%o4t"jQ P0

mG{@X+eZ)JP]0原子性:事務是一個完整性的操作,各個操作都是不可分割的(原子),要麼都操作,要麼都不操作﹔

"eMv$rj051Testing软件测试网"MgPg ku"h0t;YK

一致性:當事務完成之後,數據必須保持一致折狀態51Testing软件测试网Gv2rp| w}x-]

/PxCk:By5ho] D/a0隔離性:對數據進行修改的並發性事務,每個都是獨立的,互不影響。

*` C?h"`{v051Testing软件测试网M,Kepr;z1^ {

永久性:當事務完成之後,對數據的修改將被永久保持,事務日誌能夠保持事務的永久性

}5P-q9b_0

h UVa:i a~k0 

&[U;m R`E^ _!G)Q0

)E6O'Ee3_ I GF0使用T_SQL語句管理事務:

RJo ^3Egb051Testing软件测试网 D5Zk~;JCmByCK

開始事務:begin transaction

x8H.bD2c8iK0

DX,m sG8^A$X(\k0提交事務:commit transaction

m? cD9[z^]0

eB7Q-U$Vzh3n0回滾(撤消)事務;rollback transaction

)v;w$e"W8V3K0kc0

%Qw+j9V%w&T:H0事務分類

Z&n5d.[lJag/I051Testing软件测试网O-E,QvBC3F

顯示事務:用begin transaction明確指定事務的開始,這是最常用的事務類型51Testing软件测试网\#B!B z(jP

51Testing软件测试网;PGPIi`8m-L

隱性事務:通過設置set implicit_transactions on 語句,將隱性事務模式設置為打開,下一個語句自動啟動一個新事務。當該事務完成時,再下一個T_SQL語句又將啟動一個新事務51Testing软件测试网 w fc/W4p"G

51Testing软件测试网+X5sI-\#[0mxp{

自動提交事務:這是SQL_SERVER默認模式,它將每條單獨的T-SQL語句視為一個事務,如果執行,則自動提交,如果錯誤,則自動回滾51Testing软件测试网{I)o*^q

51Testing软件测试网g-A ktXcGEc

如何創建事務51Testing软件测试网dfs;Q%s$n

51Testing软件测试网Rp\_,Z:@F h

begin transaction 

L_RW:{yN%Q!@051Testing软件测试网~+t;~E;jeV

declare @errorSum int  /*定義變量,用於累計事務執行過程中的錯誤*/51Testing软件测试网5e9WR%IOE/XR

51Testing软件测试网PY6x9EUd,WHK

set @errorSum=0  /*初始化為0*/51Testing软件测试网&\wAI P7NYw

K0R FLH[0update bank set currentMoney=currentMoney-1000  /*轉帳:張三的帳戶少了1000無,李四的帳戶多了1000元*/

0^1c*Y4gIp/d"h051Testing软件测试网L#O+|G4S

where customeName='張三'51Testing软件测试网2h H*t;FLf kj

51Testing软件测试网7d{ \ f\_+q

set @errorSum=@errorSum+@@error

L7mv5mv+I0Ur0

7{T7b4j7} `_+y ]0update bank set current Money=currentMoney+1000

,u\@P S!H7kfZ0

E-u\6Y"n z{e0where cusomerName='李四'51Testing软件测试网1B8\3E ] f/t

*M} s IR*h?8V0set @errorSum=@errorSum+@@error  /*累計是否有誤*/

l-]{Le`N(l0

F:\m#["v_b0if @errorSum<>0  如果有錯誤51Testing软件测试网hVI)?W1FpZ3J A

[~YwNRO7qX0  begin

n5Hch Q4OuF:Et#T9g0

#S&} G]zN0    print'交易失敗,回滾事務'

p-F(y-Y4X+Sm1B051Testing软件测试网,n?k2I7me|!M

   rollback transaction

&H"wM9F-YF6x051Testing软件测试网9K-E ~DW5b2{7t9J

end

7V:Hn6sgZU051Testing软件测试网]~&^p} P ?qT

  else51Testing软件测试网 R0ZyYF(C&u"}T

:F] G&M/D|s MjF0  begin51Testing软件测试网n.p{8mt xp\ p m

$G8jqg#_0  print'交易成功,提交事務,寫入硬盤,永久的保存'51Testing软件测试网lZy4V8JM6hCKa-D

+y&_ BQE T0  commit transaction51Testing软件测试网#m~BMnY x\]

51Testing软件测试网*iQ,{ m"}i R Q)a u'Xd

end51Testing软件测试网W+O3M/kE7]c

$cE p(G4`!Gb&r0  go51Testing软件测试网5X&B)cxes }(P

51Testing软件测试网@p"y+K S!oY

  pring '查看轉帳事務後的余額'

%zZ }Z'k;v0

U4gY;X6l {-CR0  select * from bank51Testing软件测试网SJuq*c\*GG7n4L%v

O*bD"]]7C&?zG0  go51Testing软件测试网,z.~6@(|:Z#H


TAG: 數據庫

 

评分:0

我来说两句

日历

« 2024-02-17  
    123
45678910
11121314151617
18192021222324
2526272829  

数据统计

  • 访问量: 2108
  • 日志数: 5
  • 图片数: 1
  • 建立时间: 2008-04-15
  • 更新时间: 2008-12-04

RSS订阅

Open Toolbar