日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

sqlserver 事务例子

發(fā)布時(shí)間:2024/4/14 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver 事务例子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

事務(wù)是實(shí)現(xiàn)原子性的手段,原子性是指某些事情要么全部發(fā)生,要么都不發(fā)生,我們都知道,程序的執(zhí)行是有順序的,在程序的執(zhí)行過(guò)程中,難免會(huì)出現(xiàn)錯(cuò)誤,如果對(duì)于某些必須作為原子性事務(wù)發(fā)生的事,在執(zhí)行過(guò)程中,有一部執(zhí)行了,還有另外一部分由于某種錯(cuò)誤而沒(méi)有執(zhí)行,就會(huì)出現(xiàn)大麻煩。大部分的數(shù)據(jù)庫(kù)書都會(huì)舉這個(gè)例子,如果Alina在她的帳號(hào)A上取走了1000元,存在帳號(hào)B上,我們一般都會(huì)這么寫

update checking set A=A-1000 where CountName='Alina'

update saving set B=B+1000 where CountName='Alina'

但如果第一條語(yǔ)句執(zhí)行了,而第二條沒(méi)有執(zhí)行,那么就會(huì)有問(wèn)題了,我們現(xiàn)在希望這兩條語(yǔ)句要么都執(zhí)行,要么都不執(zhí)行,這就要用到事務(wù)了。

下面我就舉一個(gè)小例子幫大家理解一下。

首先我們來(lái)建一個(gè)測(cè)試表

create table MyTranTest
(
?? OrderID int primary key identity
)

現(xiàn)在我們寫一些代碼來(lái)測(cè)試一下
begin tran TranStart
insert into MyTranTest default values
save tran FirstPoint
insert into MyTranTest default values
rollback tran FirstPoint
insert into MyTranTest default values
save tran SecondPoint
insert into MyTranTest default values
rollback tran SecondPoint
insert into MyTranTest default values
commit tran TranStart

然后我們?cè)谑褂?select * from MyTranTest

結(jié)果如下:

也許你就會(huì)納悶了,明明是五條Insert語(yǔ)句,怎么只執(zhí)行了三條。

那我們就一起看一下吧

begin tran TranStart

現(xiàn)在是開始事務(wù)的時(shí)候,這開始了“要么全部,要么全不”的語(yǔ)句組合,然后是Insert一行,在這個(gè)結(jié)合點(diǎn),只有一條語(yǔ)句被插入,下一步創(chuàng)建一個(gè)保存點(diǎn),名為FirstPoint,然后在插入另一行,在這時(shí)已經(jīng)有兩行被插入了,但記住,他們都尚未被提交,因此數(shù)據(jù)庫(kù)并不把他們作為數(shù)據(jù)庫(kù)的一部分。

接下來(lái)是Rollback操作,說(shuō)明白一點(diǎn),并不是回滾到起始點(diǎn),而是回滾到FirstPoint。通過(guò)這次回滾,在進(jìn)行Rollback時(shí)刻和FirstPoint保存點(diǎn)之間的每件事情都被撤銷?,F(xiàn)在你應(yīng)該明白了表中為什么只有三條數(shù)據(jù)了吧,下面的兩個(gè)過(guò)程跟上面的一樣,最后我們調(diào)用Committed tran語(yǔ)句,他鎖住我們的事務(wù),讓他成為數(shù)據(jù)庫(kù)歷史的永久部分。

轉(zhuǎn)載于:https://www.cnblogs.com/wolfcool/archive/2009/06/11/1501004.html

總結(jié)

以上是生活随笔為你收集整理的sqlserver 事务例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。