掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
SQL Server數(shù)據(jù)庫中對事務的使用是本文我們要介紹的內(nèi)容,我們首先創(chuàng)建數(shù)據(jù)庫和表,然后再介紹利用SQL語句來使用事務的操作,接下來就讓我們一起來了解一下這部分內(nèi)容吧。

創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都網(wǎng)站制作、網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元巴州做網(wǎng)站,已為上家服務,為巴州各地企業(yè)和個人服務,聯(lián)系電話:18982081108
--建庫
- IF EXISTS (SELECT name FROM sys.databases WHERE name = N'TransTestDb')
- drop database [TransTestDb]
- CREATE DATABASE [TransTestDb];
--建表
- use [TransTestDb]
- go
- IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TransTestTable]') AND type in (N'U'))
- drop table [TransTestTable]
- CREATE TABLE [dbo].[TransTestTable](Id int, [Name] varchar(16));
--初始值
- use [TransTestDb]
- go
- insert into [TransTestTable]
- select 1,'a' union
- select 2,'b' union
- select 3,'c';
--建庫
- IF EXISTS (SELECT name FROM sys.databases WHERE name = N'TransTestDb')
- drop database [TransTestDb] CREATE DATABASE [TransTestDb];
--建表
- use [TransTestDb] go IF EXISTS (SELECT * FROM sys.objects
- WHERE object_id = OBJECT_ID(N'[dbo].[TransTestTable]') AND type in (N'U'))
- drop table [TransTestTable]
- CREATE TABLE [dbo].[TransTestTable](Id int, [Name] varchar(16));
--初始值
- use [TransTestDb] go insert into [TransTestTable]
- select 1,'a' union select 2,'b' union select 3,'c';
-- 首先介紹利用SQL語句來使用事務。Sql Server2005/2008提供了begin tran,commit tran和rollback tran三個語句來顯示的使用事務。begin tran表示事務開始,commit tran表示事務提交,rollback tran表示事務回滾。具體代碼如下:
- begin try
- begin tran
- insert into dbo.TransTestTable values (66,'66');
- update dbo.TransTestTable set [Name] = '88' where [Id] = 66;
- -- RAISERROR ('Error raised in TRY block.',16,1);
- commit tran
- end try
- begin catch
- rollback tran
- end catch
代碼中的begin try和begin catch是捕獲異常時使用的,只在sql server2005/2008中支持,sql server 2000上不支持這個語句。在begin try 和 end try之間的代碼運行時如果發(fā)生異常,則程序會跳轉(zhuǎn)到begin catch和end catch中執(zhí)行相關的rollback tran回滾操作。在begin tran和commit tran之間就是一個事務,insert和update必須同時成功,否則就同時失敗。RAISERROR 語句的意思是拋出一個異常,只在sql server2005/2008中支持,sql server 2000上不支持這個語句。
執(zhí)行上面的代碼,我們會發(fā)現(xiàn),插入和更新同時都成功了。把RAISERROR的注釋去掉后,再執(zhí)行,我們會發(fā)現(xiàn),插入和更新都回滾了。因為RAISERROR拋出異常后,沒有執(zhí)行到commit tran,而是直接執(zhí)行begin catch里面的rollback tran回滾語句了。這里可以看到事務的原子性原則和一致性原則,同時更改同時插入。
以上就是SQL Server數(shù)據(jù)庫中使用事務的過程,本文就介紹到這里了,希望本次的介紹能夠?qū)δ兴鶐椭?/p>
新聞標題:SQLServer數(shù)據(jù)庫利用SQL語句使用事務詳解
URL網(wǎng)址:http://uogjgqi.cn/article/dhisiii.html

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流