0BEGINprint'1'R" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

事務——sql server中的事務應用舉例

系統 1902 0

?sql中事務只針對一個update,delete,insert語句,如果一段程序中有超過一個這樣的語句,就需要每個都判斷是否出錯,否則就會出現若干我們不希望的情形出現,舉例如下(表結構見最后):

????????? 1,有三個 insert語句(or其它語句),第一個出錯,第二個對了,第三個錯了,如下:
BEGIN
BEGIN TRANSACTION

?????? print 'bb'
?????? insert into testNewID (a) values('aa')
?????? IF @@error <> 0
?????? BEGIN
?????????????? print '1'
????? ROLLBACK TRANSACTION
?????????????? return
?????? END

??
--????? select * from dd
?????? insert into testNewID(id,a) values(2,'bb')
?????? IF @@error <> 0
?????? BEGIN
?????????????? print '2'
????? ROLLBACK TRANSACTION
?????????????? return
?????? END

????? insert into testnewid(a) values('cc')

IF @@error <> 0
???? BEGIN
?????????????? print '3'
????? ROLLBACK TRANSACTION
?????????????? return
???? END

BEGIN
?????????????? print 'finished'
???????? COMMIT TRANSACTION
END

??
SET NOCOUNT OFF
END

--
--delete from testnewid
--select * from testNewID

這樣寫就沒問題,因為每個insert語句都經過了判斷,一旦出錯,回滾整個事務。如果這樣寫:

???????????????????? 2,

BEGIN
BEGIN TRANSACTION

?????? print 'bb'
?????? insert into testNewID (a) values('aa')
?????? insert into testNewID(id,a) values(2,'bb')

????? insert into testnewid(a) values('cc')

IF @@error <> 0
???? BEGIN
?????????????? print '3'
????? ROLLBACK TRANSACTION
?????????????? return
???? END

BEGIN
?????????????? print 'finished'
???????? COMMIT TRANSACTION
END

??
SET NOCOUNT OFF
END

--
--delete from testnewid
--select * from testNewID

這樣的話@@error只收到最后一個insert語句的信息,它是對的,所以@@error的值是0,沒錯,所以不回滾,commit語句執行,第一個插入成功,第二個失敗,第三個成功,沒有起到事務的作用。

?

???????????? 另外,如果程序中除了insert,update,delete之外的語句出現錯誤,那么整個程序停止,和事務沒有關系。事務只針對insert,update,delete這三種操作。

附:用到的表結構???? testnewid(id,a),id自增

以上是我自己的一點小經驗,可能有不對和不完善的地方,哪位看到了請千萬指出來,萬分感謝。????????????

今天得到tony的指點,原來這個事務可以優化一下,變得簡單:

Begin TRANSACTION
????????? DECLARE @Err?????????? int
????????? SET?????? @Err = 0

--在每一個操作語句之后(包括select等除update,insert,delete之外的語句)判斷一下@@error

?????? IF @@error <> 0
?????? Set @Err = @@Error

--如果以上的操作中有一個有問題,那么@Err肯定不是零了。就 rollback,如果是零說明沒有出錯的,

--就commit

??? IF @Err <> 0
???? BEGIN
????? ROLLBACK TRANSACTION?????????
???? END
??? ELSE
???? BEGIN
????? COMMIT TRANSACTION
???? END

事務——sql server中的事務應用舉例


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美激情一区二区三级高清视频 | 国产日韩在线视频 | 日日摸夜夜添夜夜添亚洲女人 | 久久国产成人福利播放 | www.伊人.com | 在线观看亚洲一区二区 | 在线观看日本污污ww网站 | 九草视频在线 | 黄在线免费 | 成av在线| 国产一区免费在线观看 | 亚洲一区二区三区日本久久九 | 欧美色欧美亚洲高清在线视频 | 婷婷天天操 | 日本黄a三级三级三级 | 精品一区视频 | 欧美不卡视频一区发布 | 天堂va在线高清一区 | 亚洲涩涩 | 国产亚洲欧美一区 | 114美女做爰视频在线 | 国产精品美女久久久久aⅴ国产馆 | 91麻豆精品国产91久久久更新时间 | 少妇特黄a一区二区三区88av | 色噜噜狠狠狠狠色综合久不 | 91麻豆精品国产91久久久更新资源速度超快 | 无码一区二区三区曰本A片 欧美综合激情网 | 成人伊人网 | 亚洲精品乱码久久久久久久久久 | 成人自拍在线 | 亚洲成a人片在线观看www流畅 | 人人草视频在线 | 欧美成人精品二区三区99精品 | 婷婷免费视频 | 一级在线观看视频 | 欧美大片在线观看 | 一区二区日韩 | 中文字幕av一区二区三区 | 成人亚洲视频 | 毛片免费观看完整版 | 爱高潮www亚洲精品 亚洲精品免费网站 |