SQL Server 的交易處理的兩種格式

來源:互聯網
上載者:User

一種是用TRY...CATCH語句,例:

---這僅僅是執行個體
create procedure [dbo].[MyTryTran] --建立預存程序
--@toID int, --接收轉賬的賬戶
--@fromID int , --轉出自己的賬戶
--@momeys money --轉賬的金額
as
begin transaction
BEGIN TRY
     select 1/0
     insert into t_Sex (FID,FSex) values (3,'na')
commit transaction
END TRY
BEGIN CATCH
begin
rollback transaction
end
END CATCH

第二種是捕捉error錯誤

create procedure [dbo].[MyTran] --建立預存程序,定義幾個變數--@toID int,    --接收轉賬的賬戶--@fromID int ,  --轉出自己的賬戶--@momeys money --轉賬的金額as begin transactiondeclare @errorSum int    --定義變數,用於累計事務執行過程中的錯誤set @errorSum=0      select 1/0set @errorSum=@errorSum+@@error --累計是否有錯誤insert into t_Sex (FID,FSex) values ('3','n')set @errorSum=@errorSum+@@error    --累計是否有錯誤if @errorSum>0    begin                rollback transaction    endelse    begin                commit transaction    end

有一種錯誤的方式,請看:

 

alter procedure [dbo].[MyErrorTran] as begin transactionselect 1/0insert into t_Sex (FID,FSex) values ('3','n')commit transactionif @@error>0            rollback transaction

--事實上不管用,因為@@error只對上一條語句管用,所以在本例中儘管發生了錯誤,但還是不會復原

 

 

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.