999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

S Q L數據庫中事務的實現方法

2013-01-29 02:33:22蔡義忠熊發涯
中國教育網絡 2013年4期
關鍵詞:數據庫信息課程

文/蔡義忠 熊發涯

本文主要探討事務的定義,事務的基本特征,以及在S Q L S e r v e r數據庫的存儲過程中的具體實現方法。還將探討事務在執行過程中失敗了,在存儲過程中是怎樣判斷及怎樣具體處理的方法。

筆者在開發一個《說課比賽網絡評分系統》時,遇到需要對多個數據庫表同時操作的情況,如果用普通的做法,順序對各個數據庫表進行操作,就可能會在極端情況下,出現操作一部分數據庫表時操作被中斷,導致數據庫中的信息出現不一致,甚至出現“臟數據”,從而影響軟件系統的穩定運行。如果使用事務來處理對多個數據庫表的操作就可以避免在極端情況下的錯誤產生。

事務是對數據庫執行的一個操作單位,它是以邏輯順序完成的工作單元或工作序列,無論是用戶手工操作,還是由程序進行的自動操作。

一個事務可以是一個或多個DML語句。在管理事務時,任何指定的事務都必須作為一個整體來完成,否則其中任何一條語句都不會完成。下面是事務的基本特征:

1.所有的事務都有開始和結束。例如,在SQL Server中事務用BEGIN TRANSACTION開始。

2.事務可以被保存或撤消。例如,在SQLS e r v e r 中撤消事務的方法用R O L L B A C KT R A N S A C T I O N 。提交事務用COMMIT TRANSACTION。通常撤消或保存事務是放在一個條件判斷語句中來執行的。

3.如果事務在中途失敗,事務中的任何部分都不會被記錄到數據庫中,這樣可以很好的保證數據的完整性。

注意:事務控制命令只與DML 命令INSERT、UPDATE 和DELETE配合使用,如我們不會創建表之后使用COMMIT 語句,因為當表被創建之后,它會自動被提交給數據庫。類似地,不能使用ROLLBACK 語句來恢復被撤消的表。

當事務完成后,事務信息被保存在數據庫里的指定區域或臨時回退區域。所有的修改都被保存到這個臨時回退區域,直到事務控制命令出現。當事務控制命令出現時,所做的修改要么被保存到數據庫中,要么被放棄,然后臨時回退區域被清空。

以具體的應用實例來進一步解釋事務的使用方法。在我最近開發的《說課比賽網絡評分系統》中,要求一個院校最多只能報四門課程參加湖北省高職高專院校說課比賽。那么,在數據庫系統中,增加一個院校表信息的同時,就得在用戶表和課程表中同時增加四條記錄信息,并且一個新增的參賽教師信息對應一個新增的參賽課程信息。這個功能對應的界面如圖1所示。

這個功能需求,用存儲過程及事務來實現,具體代碼如下:

注意:SQL Server的注釋是用“--”開頭,讀者可以通過看注釋來理解事務的實現方法。

圖1 通過事務增加院校的界面

--Proc_VS_SchoolAddTran

功能:添加一個學校的記錄的同時,添加四個教師記錄和四門課程記錄,每個教師對應著一門課程,其中第一個教師為默認的該校聯系負責人。

Create Procedure [dbo].[Proc_VS_SchoolAddTran] --創建存儲過程

(

@SchoolName [varchar](50), --學校名稱

@SchoolAddr [varchar](250) --學校地址

)

As

BEGIN --存儲過程的實現開始

BEGIN TRANSACTION--啟動事務

DECLARE @ERROR INT --定義整型變量存儲失敗錯誤編號

DECLARE @SCHOOLID INT --定義學校編號

DECLARE @TEACHERID INT --定義教師編號

SET @ERROR=0 --初始化記錄錯誤編號的變量值為0--根據存儲過程的參數@SchoolName,@SchoolAddr來插入一條學校信息記錄。

Insert Into [dbo].[tb_VS_School](

[SchoolName],

[SchoolAddr]

)

Values

(

@SchoolName,

@SchoolAddr

)

SET @ERROR=@ERROR+@@ERROR --保存當前操作返回的錯誤信息編號,注意沒錯誤時@@ERROR返回為0,有錯誤時,@@ERROR返回為非零的正整數

SET @SCHOOLID= @@identity --保存當前插入記錄的自動生成的院校ID號

--插入第一個教師的初始信息Insert Into [dbo].[tb_VS_User](

[UserTypeID], --教師類型

[Password], --參賽教師的登陸密碼,默認為123456

[Status], --參賽教師的申報信息狀態,默認為0,即未審核[SchoolID]--參賽教師所在學校的編號,即上面生成新院校的ID號)

Values(

1,

'123456',

0,

@S C HO O LI D

)

SET @ERROR=@ERROR+@@ERROR --保存當前操作返回的錯誤信息編號

SET @TEACHERID=@@identity --保存當前插入記錄的自動生成的教師ID號

Update [dbo].[tb_VS_School]

Set

[ConnectManID]=@TEACHERID

Where SchoolID=@SCHOOLID

SET @ERROR=@ERROR+@@ERROR

Insert [dbo].[tb_VS_Course] --插入一門新課程信息

(

[CourseName],--課程名

[FromSchoolID], --所在院校編號,即上面的新增院校ID編號

[FromTeacherID], --所屬教師編號,即上面的新增教師ID編號

[Status] --狀態信息,初始為0,表示未審核

)

Values

(

'某課程',

@SCHOOLID,@TEACHERID,

0

)

SET @ERROR=@ERROR+@@ERROR

--增加第二名第三名第四名教師及課程的操作代碼同上,在此處略過。

--由于只要有一個Insert語句執行出現失敗,@@ERROR

都會產生一個正整數,所以每次操作結束都用

@ERROR=@ERROR+@@ERROR記錄下@ERROR的值是否發生變化,如果@ERROR始終為零,則一切正常,可以提交事務,完成整個操作,反之,則回滾事務,放棄所做的修改。

IF(@ERROR=0)

BEGIN

COMMIT TRANSACTION

Return @SCHOOLID

END

ELSE

BEGIN

ROLLBACK TRANSACTION Return 0

END

END

go

--最后用exec來執行測試一下Proc_VS_SchoolAddTran的功能

--exec Proc_VS_SchoolAddTran '黃岡技工學院','黃岡市黃州區'

事務處理在數據庫應用中極為重要,是保證數據庫應用系統安全穩定運行的重要手段。本文中的小案例中的判斷事務執行的成功或失敗是通過記錄每個操作語句執行后返回的系統錯誤號@@ERROR來判斷,只要有一次出現@@ERROR返回值不是0,則最終的@ERROR變量就不能為0,也就可以判斷事務是否失敗。注意區別,@ERROR是我定義的變量,@@ERROR是系統返回的錯誤編號,執行正常時@@ERROR返回為0,執行不正常@@ERROR返回為非0。

猜你喜歡
數據庫信息課程
數字圖像處理課程混合式教學改革與探索
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲区视频在线观看| 欧美成人aⅴ| 一本大道视频精品人妻| 亚洲美女久久| 亚洲熟女中文字幕男人总站| 制服丝袜 91视频| 91福利在线观看视频| 国产中文一区二区苍井空| 亚洲一道AV无码午夜福利| 91小视频在线观看免费版高清| 69av免费视频| 国产精品成人第一区| 国产美女91呻吟求| 欧美h在线观看| 亚洲成在人线av品善网好看| 国产91高清视频| 亚洲精品自产拍在线观看APP| 中文字幕丝袜一区二区| 曰AV在线无码| 久热中文字幕在线| 毛片a级毛片免费观看免下载| m男亚洲一区中文字幕| 播五月综合| 日韩在线网址| 在线亚洲精品福利网址导航| 99在线视频网站| 激情無極限的亚洲一区免费 | 国产高清无码麻豆精品| 91日本在线观看亚洲精品| 97国内精品久久久久不卡| 国产精品入口麻豆| 九一九色国产| 老司机精品99在线播放| 国产成人麻豆精品| 国产精品污污在线观看网站| 日韩视频免费| 国产情精品嫩草影院88av| 男女男精品视频| 国产精品嫩草影院视频| 亚洲色图欧美激情| 欧美黄网在线| 久久久久久久久久国产精品| 天天综合亚洲| 国产99精品视频| 亚洲成AV人手机在线观看网站| 国产乱子伦无码精品小说| 被公侵犯人妻少妇一区二区三区 | 成年人国产网站| 亚洲欧洲日韩国产综合在线二区| 婷婷开心中文字幕| 中文无码伦av中文字幕| 久久超级碰| 欧美亚洲第一页| 亚洲精品第1页| 国产成+人+综合+亚洲欧美| 国产日韩丝袜一二三区| 高清不卡毛片| 日本AⅤ精品一区二区三区日| 成人国产精品一级毛片天堂| 亚洲成年人片| 欧美成人二区| 国产福利一区在线| 中文字幕亚洲另类天堂| 久久久四虎成人永久免费网站| 四虎精品国产AV二区| 亚洲欧洲自拍拍偷午夜色无码| 精品国产免费观看一区| 欧美一区二区三区欧美日韩亚洲| 黄色网在线| 她的性爱视频| 国产无码性爱一区二区三区| 大香网伊人久久综合网2020| 国产精品尤物铁牛tv| 亚洲愉拍一区二区精品| 亚洲欧美国产视频| 伊人久热这里只有精品视频99| 久久综合伊人 六十路| 亚洲国产欧洲精品路线久久| 亚洲成人黄色在线| 亚洲开心婷婷中文字幕| www中文字幕在线观看| 美女毛片在线|