SQL中的事物【转】
生活随笔
收集整理的這篇文章主要介紹了
SQL中的事物【转】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
來源于:http://www.cnblogs.com/zhuifengnianshao/archive/2010/11/24/1886939.html事務(wù)(Transaction)是并發(fā)控制的單位,是用戶定義的一個(gè)操作序列。這些操作要么都做,要么都不做,是一個(gè)不可分割的工作單位。
通過事務(wù),SQL Server能將邏輯相關(guān)的一組操作綁定在一起,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。
在sql server+ .net 開發(fā)環(huán)境下,有兩種方法能夠完成事務(wù)的操作,保持?jǐn)?shù)據(jù)庫的數(shù)據(jù)完整性;
一個(gè)就是用sql存儲過程,另一個(gè)就是在ADO.NET中一種簡單的事務(wù)處理;
現(xiàn)在通過一個(gè)典型的銀行轉(zhuǎn)賬的例子來說明一下這兩個(gè)例子的用法
我們先來看看sql存儲過程是如何來完成事務(wù)的操作的:
首先創(chuàng)建一個(gè)表:
create database aaaa --創(chuàng)建一個(gè)表,包含用戶的帳號和錢數(shù)
go
use aaaa
create table bb
(ID int not null primary key, --帳號moneys money --轉(zhuǎn)賬金額
)
insert into bb values ('1','2000') --插入兩條數(shù)據(jù)
insert into bb values ('2','3000')
用這個(gè)表創(chuàng)建一個(gè)存儲過程:create procedure mon --創(chuàng)建存儲過程,定義幾個(gè)變量@toID int, --接收轉(zhuǎn)賬的賬戶@fromID int , --轉(zhuǎn)出自己的賬戶@momeys money --轉(zhuǎn)賬的金額asbegin tran --開始執(zhí)行事務(wù)update bb set moneys=moneys-@momeys where ID=@fromID -執(zhí)行的第一個(gè)操作,轉(zhuǎn)賬出錢,減去轉(zhuǎn)出的金額update bb set moneys=moneys+@momeys where ID=@toID --執(zhí)行第二個(gè)操作,接受轉(zhuǎn)賬的金額,增加if @@error<>0 --判斷如果兩條語句有任何一條出現(xiàn)錯(cuò)誤begin rollback tran –開始執(zhí)行事務(wù)的回滾,恢復(fù)的轉(zhuǎn)賬開始之前狀態(tài)return 0endgoelse --如何兩條都執(zhí)行成功begin commit tran 執(zhí)行這個(gè)事務(wù)的操作return 1endgo
轉(zhuǎn)載于:https://www.cnblogs.com/alphafly/p/3939337.html
總結(jié)
以上是生活随笔為你收集整理的SQL中的事物【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript】apply和ca
- 下一篇: [架构] 分布式和集群的区别