事務的用法

2021-09-06 13:11:12 字數 1700 閱讀 4514

學習事務後有些心得分享,以財務轉賬為例子:

一、用儲存過程的方式實現事務

開啟mssql,執行以下**:

create database aaaa  ---建立資料庫

--------------------

use aaaa

create table bb      ----建立表

( id int not null primary key,  --帳號

moneys money    --轉賬金額

)--------------------

insert into bb values ('1','2000') --插入兩條資料

insert into bb values ('2','3000')

---------------------

use aaaa

goalter procedure mon  --建立儲存過程,定義幾個變數

@toid int,    --接收轉賬的賬戶

@fromid int ,  --轉出自己的賬戶

@momeys money --轉賬的金額

asbegin tran --開始執行事務

update bb set moneys=moneys-@momeys where id=@fromid --執行的第乙個操作,轉賬出錢,減去轉出的金額

update bb set moneys=moneys+@momeys where id=@toid --執行第二個操作,接受轉賬的金額,增加

if @@error<>0 --判斷如果兩條語句有任何一條出現錯誤

begin rollback tran --–開始執行事務的回滾,恢復的轉賬開始之前狀態

return 0

end 

else   --如何兩條都執行成功

begin commit tran ---執行這個事務的操作

return 1

endcommit tran

至此sqlserver的準備工作結束,接下來來看下c#是如何呼叫這個儲存過程的:

protected void button1_click1(object sender, eventargs e)

}二、用asp.net的方式實現事務(不用儲存過程的方式)

protected void button2_click(object sender, eventargs e)

塊裡執行sqlcommand命令,

cmd.commandtext = "update bb set moneys=moneys-'" + convert.toint32(textbox1.text) + "' where id='1'";

cmd.executenonquery();

cmd.commandtext = "update bb set moneys=moneys+'" + convert.toint32(textbox1.text) + "' where id='2'";

cmd.executenonquery();

tran.commit();//如果兩個sql命令都執行成功,則執行commit這個方法,執行這些操作

label1.text = "新增成功";

catch

{label1.text = "新增失敗";

tran.rollback();//如何執行不成功,發生異常,則執行rollback方法,回滾到事務操作開始之前;

事務的用法

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server 能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。在 sql server net 開發環境下,有兩種方法能夠完成事務的操作...

sqlserver事務的用法

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server 能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。現在通過乙個典型的銀行轉賬的例子來說明一下 首先建立乙個表 create ...

SQl事務用法

簡單地說,事務是一種機制,用以維護資料庫的完整性。其實現形式就是將普通的sql語句嵌入到begin tran.commit tran 中 或完整形式 begin transaction.commit transaction 當然,必要時還可以使用rollback tran 回滾事務,即撤銷操作。利用...