sqlserver中的事務處理

2021-06-22 23:16:22 字數 2111 閱讀 4041

事務(

transaction

)是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。

通過事務,

sql server

能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。

sql server+ .net

開發環境下,有兩種方法能夠完成事務的操作,保持資料庫的資料完整性;

乙個就是用

sql儲存過程,另乙個就是在

ado.net

中一種簡單的事務處理;

現在通過乙個典型的銀行轉賬的例子來說明一下這兩個例子的用法
我們先來看看

sql儲存過程是如何來完成事務的操作的:

首先建立乙個表:
create database aaaa --

建立乙個表,包含使用者的帳號和錢數

go
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')
用這個表建立乙個儲存過程:

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

@toid int,--

接收轉賬的賬戶

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

@momeys money --轉賬的金額 as

begin 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

endgo

else --

如何兩條都執行成功

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

return 1

endgo

接下來看看c#.net 是如何呼叫這個儲存過程的:

protected void button1_click(object sender, eventargs e)

else

}這個也就是在儲存過程裡新增事務,再來看看不在資料庫寫sql儲存過程,ado.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+' aa ' where id='2'";

cmd.executenonquery();

tran.commit();//

如果兩個sql命令都執行成功,則執行commit這個方法,執行這些操作

label1.text = "

新增成功";}

catch

} 這就是兩個事務不同用法的簡單例子,ado.net 事務處理的方法看起來比較簡單,但是他要使用同乙個連線來執行這些操作,要是同時使用幾個資料庫來用乙個事務執行,這樣就比較繁瑣,但是要是用sql儲存過程,這樣就相對比較簡單,總之是兩種方法各有各的優點。

原文**:

SQL SERVER 事務處理

1 事務的概念 事務是乙個不可分割的工作邏輯單元。2 為什麼使用事物 可以防止錯誤的發生。3 事物的作用 要麼所有的操作全部完成,要麼所有操作都不執行。4 什麼是事物 事務是單個的工作單元 如果某一事務成功,則在該事務中進行的所有的資料更改均會提交,稱為資料庫中的永久組成部分。如果事務遇到錯誤且必須...

簡單的SQL Server事務處理

相信大家在日常程式設計中,都會遇到同時更新或同時維護多個表的操作,為保持資料的一致性,sql server裡為我們提供很多便利方法,其中之一就是 事務處理 的辦法。事務處理?可以簡單例項化理解為 我們要同時更新表1 表2 不能因網路原因,在更新完表1後,由於斷電或網路故障導致表2沒有更新而致使兩表的...

Oracle與SQL Server事務處理的比較

事務處理是所有大型資料庫產品的乙個關鍵疑問,各資料庫廠商都在這個方面花費了很大精力,不同的事務處理方式會導致資料庫效能和功能上的巨大差異。事務處理也是資料庫管理員與資料庫運用 程式開發人員必須深刻理解的乙個疑問,對這個疑問的疏忽可能會導致運用 程式邏輯不正確以及效率低下。下面我們針對oracle及s...