sql2005事務的使用

2022-02-23 09:07:44 字數 1512 閱讀 4311

公司裡的每個專案都有很多一次要操作兩次以上資料庫的,為了資料的完整性,這就需要使用事務

事務也屬於儲存過程,**如下

alter proc [dbo].[js_takemoney]

@userid bigint,                            --引數

@usercode varchar(50),

@amount numeric(18,2),

@rmb numeric(18,2)

asbegin

declare @balance numeric(18,2)

declare @takecharg numeric(18,2)

declare @takechargmoney numeric(18,2)

declare @turetype numeric(18,2)

declare @getamount numeric(18,2) --實際金額

declare @waterid int --流水賬表的id

select @takecharg =takemoneychargrate ,@turetype = ustormb from tb_globeparam where id = '1'

set @takechargmoney = @amount * @takecharg/100

set @getamount =@amount - (@amount * @takecharg/100) --手續費的計算

begin tran takemoney         --開始事務

update tb_user set bonusaccount = bonusaccount - @amount where userid = @userid --更新使用者表

select @balance = bonusaccount from tb_user where userid = @userid

insert into tb_accountdetails values (@userid,@usercode,'1','提現','0',@amount,@balance,getdate()) --流水賬表記錄插入

select top 1 @waterid = @@identity from tb_accountdetails where userid = @userid

insert into tb_takemoney values (getdate(),@amount,@getamount,@rmb,@takechargmoney,@userid,'0',@waterid,getdate()) --提現表記錄插入

if @@error<>0             --如果失敗

begin

rollback tran takemoney         -- 回滾事務

return

endcommit tran mytran           --提交事務

end這寫法是網上一位不知名的網友提供的,我忘了……這個例子是我專案裡的例子

希望對初學者有所幫助

定期清理sql2005事務日誌

因最近公司 客戶量的增加,後台資料庫的日誌也在不斷的增加,為避免資料 庫日誌過大導致 執行出錯,就需定期對資料庫事務日誌進行清理 dump transaction 資料庫名 with no log backup log 資料庫名 with no log dbcc shrinkdatabase 資料庫...

使用SQL2005 替代 SQLEXPRESS

使用sql2005 替代 sqlexpress 開啟sql server configuration manager 使能tcp ip協議 建立以下別名 別名 172.17.5.47 sqlexpress 別名 127.0.0.1 sqlexpress 別名 username sqlexpress ...

SQL 2005 使用row number來分頁

今天研究了一下row number,用它來返回特定行的記錄感覺是非常方便的,所以就做了個分頁的儲存過程,但不知道效能較之top和游標之類的那個好 create procedure dbo proc testpage 表名 tablename nvarchar 255 排序字段 sortcolumn ...