麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server存儲過程中編寫事務(wù)處理的方法小結(jié)

2024-08-31 01:03:43
字體:
供稿:網(wǎng)友
這篇文章主要介紹了SQL Server存儲過程中編寫事務(wù)處理的方法,結(jié)合實例形式總結(jié)分析了三種存儲過程中編寫事務(wù)處理的方法,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了SQL Server存儲過程中編寫事務(wù)處理的方法。分享給大家供大家參考,具體如下:

SQL Server中數(shù)據(jù)庫事務(wù)處理是相當(dāng)有用的,鑒于很多SQL初學(xué)者編寫的事務(wù)處理代碼存往往存在漏洞,本文我們介紹了三種不同的方法,舉例說明了如何在存儲過程事務(wù)處理中編寫正確的代碼。希望能夠?qū)δ兴鶐椭?/p>

在編寫SQL Server 事務(wù)相關(guān)的存儲過程代碼時,經(jīng)常看到下面這樣的寫法:

begin tranupdate statement 1 ...update statement 2 ...delete statement 3 ...commit tran

這樣編寫的SQL存在很大隱患。請看下面的例子:

create table demo(id int not null)gobegin traninsert into demo values (null)insert into demo values (2)commit trango

執(zhí)行時會出現(xiàn)一個違反not null 約束的錯誤信息,但隨后又提示(1 row(s) affected)。 我們執(zhí)行select * from demo 后發(fā)現(xiàn)insert into demo values(2) 卻執(zhí)行成功了。 這是什么原因呢? 原來 SQL Server在發(fā)生runtime 錯誤時,默認(rèn)會rollback引起錯誤的語句,而繼續(xù)執(zhí)行后續(xù)語句。

如何避免這樣的問題呢?有三種方法:

1. 在事務(wù)語句最前面加上set xact_abort on

set xact_abort onbegin tranupdate statement 1 ...update statement 2 ...delete statement 3 ...commit trango

當(dāng)xact_abort 選項為on 時,SQL Server在遇到錯誤時會終止執(zhí)行并rollback 整個事務(wù)。

2. 在每個單獨(dú)的DML語句執(zhí)行后,立即判斷執(zhí)行狀態(tài),并做相應(yīng)處理。

begin tranupdate statement 1 ...if @@error <> 0begin rollback trangoto labendenddelete statement 2 ...if @@error <> 0begin rollback trangoto labendendcommit tranlabend:go

3. 在SQL Server 2005中,可利用 try...catch 異常處理機(jī)制。

begin tranbegin tryupdate statement 1 ...delete statement 2 ...endtrybegin catchif @@trancount > 0rollback tranend catchif @@trancount > 0commit trango

下面是個簡單的存儲過程,演示事務(wù)處理過程。

create procedure dbo.pr_tran_inproc as begin set nocount onbegin tranupdate statement 1 ...if @@error <> 0begin rollback tranreturn -1 enddelete statement 2 ...if @@error <> 0begin rollback tranreturn -1end commit tranreturn 0endgo

希望本文所述對大家SQL Server數(shù)據(jù)庫程序設(shè)計有所幫助。



注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 激情亚洲一区二区 | 蜜桃av鲁一鲁一鲁一鲁 | 国产成人在线观看免费 | 国产精品欧美久久久久一区二区 | chinese 军人 gay xx 呻吟 | 亚洲一区在线免费视频 | 国产合集91合集久久日 | 成人黄色小视频在线观看 | 中文字幕亚洲一区二区三区 | 91午夜在线观看 | 国内精品伊人久久 | 色97色| 亚洲精品午夜国产va久久成人 | 懂色av懂色aⅴ精彩av | av之家在线观看 | 国产日产精品一区二区三区四区 | 色屁屁xxxxⅹ免费视频 | 一区二区久久精品66国产精品 | 国产va在线观看 | 国产精品伦视频看免费三 | 日日草夜夜草 | 免费在线成人网 | 国产午夜精品一区二区三区视频 | 久久免费视频在线 | 久久久久久久久成人 | 成人精品久久 | 最新在线黄色网址 | 男人久久天堂 | 午夜精品久久久久久久96蜜桃 | 97久久曰曰久久久 | 亚洲第一男人天堂 | av手机在线电影 | 91精品久久久久久久 | 九九热这里只有精品8 | 久久蜜桃精品一区二区三区综合网 | 免费观看黄色片视频 | 91香蕉国产亚洲一区二区三区 | 国产精品自拍99 | 91av久久| 91美女视频在线 | 欧美综合日韩 |