第14講 事務(wù)與觸發(fā)器_第1頁
第14講 事務(wù)與觸發(fā)器_第2頁
第14講 事務(wù)與觸發(fā)器_第3頁
第14講 事務(wù)與觸發(fā)器_第4頁
第14講 事務(wù)與觸發(fā)器_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、回顧回顧 存儲(chǔ)過程存儲(chǔ)過程(Procedure)的定義的定義 輸入?yún)?shù)輸入?yún)?shù) 參數(shù)名參數(shù)名 輸出參數(shù)輸出參數(shù) 參數(shù)名參數(shù)名 output 執(zhí)行狀態(tài)值,執(zhí)行狀態(tài)值,0表示成功,表示成功,-99-1表示系統(tǒng)發(fā)現(xiàn)的執(zhí)行錯(cuò)表示系統(tǒng)發(fā)現(xiàn)的執(zhí)行錯(cuò) 誤,其余的值表示自定義的錯(cuò)誤。誤,其余的值表示自定義的錯(cuò)誤。 存儲(chǔ)過程的執(zhí)行存儲(chǔ)過程的執(zhí)行 EXECUTE PROC 過程名過程名 參數(shù)參數(shù)output 思考:思考: 余額表余額表(帳號(hào),余額帳號(hào),余額) “001”賬戶向賬戶向“002”賬戶轉(zhuǎn)賬戶轉(zhuǎn)X元,手續(xù)費(fèi)元,手續(xù)費(fèi)1%,需要完成如,需要完成如 下下2項(xiàng)數(shù)據(jù)操作:項(xiàng)數(shù)據(jù)操作: 操作操作1:001賬戶減賬戶

2、減X*1.01, 操作操作2:002賬戶加賬戶加X. 完成以下完成以下存儲(chǔ)過程存儲(chǔ)過程proc_轉(zhuǎn)帳轉(zhuǎn)帳,用于實(shí)現(xiàn)轉(zhuǎn)帳業(yè)務(wù)的數(shù)據(jù),用于實(shí)現(xiàn)轉(zhuǎn)帳業(yè)務(wù)的數(shù)據(jù) 操作功能。操作功能。 CREATE PROC proc_轉(zhuǎn)帳轉(zhuǎn)帳 outId char(20), inId char(20), amout int AS -SQL 體體 數(shù)據(jù)庫原理與應(yīng)用數(shù)據(jù)庫原理與應(yīng)用 第第14講講 事務(wù)與觸發(fā)器事務(wù)與觸發(fā)器 1. 事務(wù)事務(wù) 關(guān)鍵詞關(guān)鍵詞: BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN 10.5 10.5 事務(wù)處理事務(wù)處理 事務(wù)事務(wù)(Transaction) 是一個(gè)邏輯工作單元

3、。單元中的所有操作要么全部成功,是一個(gè)邏輯工作單元。單元中的所有操作要么全部成功, 要么全部取消。要么全部取消。 事務(wù)的必要性事務(wù)的必要性 (1) 如果一個(gè)業(yè)務(wù)需要多個(gè)數(shù)據(jù)操作,而只有其中的部分如果一個(gè)業(yè)務(wù)需要多個(gè)數(shù)據(jù)操作,而只有其中的部分 操作成功,則數(shù)據(jù)的操作成功,則數(shù)據(jù)的一致性將一致性將會(huì)被破壞。會(huì)被破壞。例如例如:銀行:銀行 轉(zhuǎn)帳,至少需要兩項(xiàng)操作:甲賬戶扣除,乙賬戶增加,轉(zhuǎn)帳,至少需要兩項(xiàng)操作:甲賬戶扣除,乙賬戶增加, 不允許只有一項(xiàng)操作成功,而另一項(xiàng)失敗。不允許只有一項(xiàng)操作成功,而另一項(xiàng)失敗。 (2)導(dǎo)致錯(cuò)誤的原因可分為兩類:一是可以預(yù)見的邏輯錯(cuò)導(dǎo)致錯(cuò)誤的原因可分為兩類:一是可以預(yù)

4、見的邏輯錯(cuò) 誤,比如賬戶不存在,余額不足等。二是不可預(yù)見的誤,比如賬戶不存在,余額不足等。二是不可預(yù)見的 錯(cuò)誤,比如錯(cuò)誤,比如DBMS停止服務(wù)、操作延時(shí)導(dǎo)致中斷等等。停止服務(wù)、操作延時(shí)導(dǎo)致中斷等等。 (3) 把一個(gè)業(yè)務(wù)所需的把一個(gè)業(yè)務(wù)所需的多個(gè)操作放入一個(gè)事務(wù)多個(gè)操作放入一個(gè)事務(wù),可以保證,可以保證 所有操作作為一個(gè)單元來執(zhí)行。所有操作作為一個(gè)單元來執(zhí)行。 事務(wù)執(zhí)行原理事務(wù)執(zhí)行原理 p 事務(wù)作為一個(gè)整體提交,在提交之前,所有的事務(wù)作為一個(gè)整體提交,在提交之前,所有的操作被臨時(shí)存放起操作被臨時(shí)存放起 來來,并沒有保存到數(shù)據(jù)庫中。,并沒有保存到數(shù)據(jù)庫中。 p 任何一個(gè)操作錯(cuò)誤,數(shù)據(jù)將回退到事務(wù)開始

5、時(shí)的狀態(tài),臨時(shí)更改任何一個(gè)操作錯(cuò)誤,數(shù)據(jù)將回退到事務(wù)開始時(shí)的狀態(tài),臨時(shí)更改 被全部取消。被全部取消。 p 事務(wù)提交后,數(shù)據(jù)更新被保存到數(shù)據(jù)庫。事務(wù)提交后,數(shù)據(jù)更新被保存到數(shù)據(jù)庫。 T-SQL中管理事務(wù)中管理事務(wù) BEGIN TRAN 事務(wù)名事務(wù)名-開始事務(wù)開始事務(wù) 操作操作1 if 錯(cuò)誤錯(cuò)誤 ROLLBACK-回退回退 操作操作2 if 錯(cuò)誤錯(cuò)誤 ROLLBACK-回退回退 操作操作3 if 錯(cuò)誤錯(cuò)誤 ROLLBACK-回退回退 COMMIT TRAN 事務(wù)名事務(wù)名-提交事務(wù)提交事務(wù) 事物的屬性事物的屬性(ACID) 原子性原子性(Atomicity)事務(wù)中的操作要么全成功,要么事務(wù)中的操作要

6、么全成功,要么 全回退,全回退, 一致性一致性(Consistency)事務(wù)執(zhí)行前后數(shù)據(jù)在邏輯上是一事務(wù)執(zhí)行前后數(shù)據(jù)在邏輯上是一 致的,致的, 隔離性隔離性(Isolation)甲事務(wù)執(zhí)行時(shí),乙事務(wù)不能得到甲甲事務(wù)執(zhí)行時(shí),乙事務(wù)不能得到甲 事務(wù)中間的狀態(tài)。即事務(wù)串行化,乙事務(wù)得到的數(shù)據(jù)事務(wù)中間的狀態(tài)。即事務(wù)串行化,乙事務(wù)得到的數(shù)據(jù) 要么是甲事務(wù)執(zhí)行前的狀態(tài),要么是執(zhí)行后的狀態(tài)。要么是甲事務(wù)執(zhí)行前的狀態(tài),要么是執(zhí)行后的狀態(tài)。 持久性持久性(Durability)事務(wù)執(zhí)行完后,對(duì)數(shù)據(jù)進(jìn)行的更事務(wù)執(zhí)行完后,對(duì)數(shù)據(jù)進(jìn)行的更 改將被保存。改將被保存。 事務(wù)的事務(wù)的3種模式種模式 1.顯式事務(wù):用顯式事務(wù)

7、:用BEGIN TRAN開始事務(wù),用開始事務(wù),用COMMIT 提提 交事務(wù),用交事務(wù),用ROLLBACK回退事務(wù)?;赝耸聞?wù)。 (重點(diǎn)重點(diǎn)) 2.自動(dòng)提交事務(wù):是數(shù)據(jù)引擎的缺省模式,每個(gè)單獨(dú)的自動(dòng)提交事務(wù):是數(shù)據(jù)引擎的缺省模式,每個(gè)單獨(dú)的 語句在完成后被提交,失敗后被回滾。語句在完成后被提交,失敗后被回滾。 3.隱式事務(wù):一個(gè)語句是一個(gè)新的事務(wù),直到結(jié)束這個(gè)隱式事務(wù):一個(gè)語句是一個(gè)新的事務(wù),直到結(jié)束這個(gè) 事務(wù)(事務(wù)(提交或回退提交或回退)。)。 10.5 10.5 事務(wù)處理事務(wù)處理 使用事務(wù)的經(jīng)驗(yàn):使用事務(wù)的經(jīng)驗(yàn): 在存儲(chǔ)過程中管理事務(wù),控制事務(wù)的啟動(dòng)、提交和回在存儲(chǔ)過程中管理事務(wù),控制事務(wù)的啟

8、動(dòng)、提交和回 滾。事務(wù)中的所有操作包含在:滾。事務(wù)中的所有操作包含在:BEGIN TRAN和和 COMMIT TRAN之間。自定義存儲(chǔ)過程狀態(tài)值,以反之間。自定義存儲(chǔ)過程狀態(tài)值,以反 應(yīng)事務(wù)是否有效執(zhí)行。應(yīng)事務(wù)是否有效執(zhí)行。 (2) 對(duì)事務(wù)中的每個(gè)操作進(jìn)行跟蹤,一般用到兩個(gè)系統(tǒng)變對(duì)事務(wù)中的每個(gè)操作進(jìn)行跟蹤,一般用到兩個(gè)系統(tǒng)變 量:量: error和和 rowcount。 用系統(tǒng)變量用系統(tǒng)變量error跟蹤執(zhí)行狀態(tài),當(dāng)跟蹤執(zhí)行狀態(tài),當(dāng)error0時(shí),時(shí), 說明操作發(fā)生了執(zhí)行錯(cuò)誤;說明操作發(fā)生了執(zhí)行錯(cuò)誤; 用系統(tǒng)變量用系統(tǒng)變量rowcount跟蹤受影響的行數(shù)跟蹤受影響的行數(shù),如果,如果 rowco

9、unt與預(yù)期不符,說明操作發(fā)生了業(yè)務(wù)錯(cuò)誤。與預(yù)期不符,說明操作發(fā)生了業(yè)務(wù)錯(cuò)誤。 發(fā)生錯(cuò)誤時(shí),用發(fā)生錯(cuò)誤時(shí),用ROLLBACK TRAN回退事務(wù)?;赝耸聞?wù)。 示例:示例: 余額表余額表(帳號(hào),余額帳號(hào),余額) “001”賬戶向賬戶向“002”賬戶轉(zhuǎn)賬戶轉(zhuǎn)X元,手續(xù)費(fèi)元,手續(xù)費(fèi)1%,需要完成如,需要完成如 下下2項(xiàng)數(shù)據(jù)操作:項(xiàng)數(shù)據(jù)操作: 操作操作1:001賬戶減賬戶減X*1.01, 操作操作2:002賬戶加賬戶加X. 可能發(fā)生的錯(cuò)誤如下:可能發(fā)生的錯(cuò)誤如下: 可控的錯(cuò)誤:可控的錯(cuò)誤:沒有沒有001賬號(hào),沒有賬號(hào),沒有002賬號(hào),賬號(hào),001賬號(hào)賬號(hào) 余額不足。余額不足。 不可控的錯(cuò)誤:操作不可控的

10、錯(cuò)誤:操作1失敗,操作失敗,操作2失敗。失敗。 (事務(wù)定義事務(wù)定義見見 代碼代碼) 使用事務(wù)的不好的做法:使用事務(wù)的不好的做法: 有些程序員定義事務(wù)時(shí),只用一對(duì)有些程序員定義事務(wù)時(shí),只用一對(duì)BEGIN TRAN和和 COMMIT TRAN,在這種情況下,如果部分操作發(fā)生錯(cuò),在這種情況下,如果部分操作發(fā)生錯(cuò) 誤,其余操作可能成功,將導(dǎo)致數(shù)據(jù)的不一致性。誤,其余操作可能成功,將導(dǎo)致數(shù)據(jù)的不一致性。 在開始事務(wù)之前使用在開始事務(wù)之前使用SET XACT_ABORT ON(默認(rèn)情況(默認(rèn)情況 下為下為OFF),可以保證事務(wù)中任一操作發(fā)生錯(cuò)誤時(shí),所有,可以保證事務(wù)中任一操作發(fā)生錯(cuò)誤時(shí),所有 操作全部回退

11、,但這種方法操作全部回退,但這種方法只能檢查執(zhí)行錯(cuò)誤只能檢查執(zhí)行錯(cuò)誤,不能檢不能檢 查業(yè)務(wù)錯(cuò)誤查業(yè)務(wù)錯(cuò)誤。 例如:例如: SET XACT_Abort ON BEGIN TRAN UPDATE 余額表余額表 SET 余額余額=余額余額-amount*1.01 WHERE 賬號(hào)賬號(hào) =outId UPDATE 余額表余額表 SET 余額余額=余額余額+amount WHERE 賬號(hào)賬號(hào)=inId print 轉(zhuǎn)賬成功轉(zhuǎn)賬成功 (1) COMMIT TRAN 案例案例 10.5.2 10.5.2 事務(wù)管理事務(wù)管理 事務(wù)嵌套事務(wù)嵌套 事務(wù)可以嵌套執(zhí)行。即事務(wù)可以嵌套執(zhí)行。即BEGIN TRAN和和C

12、OMMIT TRAN之間可以含之間可以含 有有BEGIN TRAN和和COMMIT TRAN。 最外層的事務(wù)提交時(shí),內(nèi)存事務(wù)的操作才被接受,如果外層事務(wù)被最外層的事務(wù)提交時(shí),內(nèi)存事務(wù)的操作才被接受,如果外層事務(wù)被 回退,內(nèi)層事務(wù)也將被回退。回退,內(nèi)層事務(wù)也將被回退。 案例案例 10.5.2 10.5.2 事務(wù)管理事務(wù)管理 事務(wù)部分回退事務(wù)部分回退 在事務(wù)中設(shè)定在事務(wù)中設(shè)定保存點(diǎn)保存點(diǎn)(SavePoint),可指定,可指定回退到保存點(diǎn)回退到保存點(diǎn), 保存點(diǎn)之前的操作被視為保存點(diǎn)之前的操作被視為有效有效。 例:例: 如果在完成轉(zhuǎn)賬之后,顯示賬戶余額??稍谵D(zhuǎn)賬業(yè)務(wù)完如果在完成轉(zhuǎn)賬之后,顯示賬戶余額。

13、可在轉(zhuǎn)賬業(yè)務(wù)完 成時(shí),進(jìn)行一次事務(wù)保存。成時(shí),進(jìn)行一次事務(wù)保存。 BEGIN TRAN tran_轉(zhuǎn)賬并顯示余額轉(zhuǎn)賬并顯示余額 -轉(zhuǎn)賬操作轉(zhuǎn)賬操作 SAVE TRAN AFTER_轉(zhuǎn)賬轉(zhuǎn)賬 SELECT * FROM 余額表余額表 WHERE 賬號(hào)賬號(hào)=outId if error0 ROLLBACK TRAN AFTER_轉(zhuǎn)賬轉(zhuǎn)賬 COMMIT TRAN TRAN tran_轉(zhuǎn)賬并顯示余額轉(zhuǎn)賬并顯示余額 思考:思考: 在在BookStore數(shù)據(jù)庫中,存在三個(gè)表:數(shù)據(jù)庫中,存在三個(gè)表: 圖書表圖書表(圖書編號(hào)圖書編號(hào),書名,狀態(tài),書名,狀態(tài)) 借閱表借閱表(圖書編號(hào)圖書編號(hào),借書證號(hào),借出日期

14、,借書證號(hào),借出日期) 業(yè)務(wù)記錄表業(yè)務(wù)記錄表(業(yè)務(wù)編號(hào),借書證號(hào),圖書編號(hào),業(yè)務(wù)業(yè)務(wù)編號(hào),借書證號(hào),圖書編號(hào),業(yè)務(wù) 日期,業(yè)務(wù)類型日期,業(yè)務(wù)類型) 當(dāng)借書業(yè)務(wù)發(fā)生時(shí),需要對(duì)三個(gè)數(shù)據(jù)操作,當(dāng)借書業(yè)務(wù)發(fā)生時(shí),需要對(duì)三個(gè)數(shù)據(jù)操作, (1)圖書表中某行的狀態(tài)改為圖書表中某行的狀態(tài)改為借出借出, (2)借閱表增加一行,借閱表增加一行, (3)業(yè)務(wù)記錄表增加一行。業(yè)務(wù)記錄表增加一行。 請(qǐng)編寫存儲(chǔ)過程請(qǐng)編寫存儲(chǔ)過程proc_LendBook,在存儲(chǔ)過程中使用,在存儲(chǔ)過程中使用事事 務(wù)務(wù),實(shí)現(xiàn)借書邏輯。,實(shí)現(xiàn)借書邏輯。 2. 觸發(fā)器觸發(fā)器 關(guān)鍵詞:關(guān)鍵詞:INSTEAD OF觸發(fā)器觸發(fā)器, AFTER觸觸 發(fā)

15、器,發(fā)器,INSERTED表,表,DELETED表表 思考:思考: 考慮考慮思考思考中編寫的存儲(chǔ)過程,當(dāng)用戶調(diào)用這個(gè)存中編寫的存儲(chǔ)過程,當(dāng)用戶調(diào)用這個(gè)存 儲(chǔ)過程時(shí),可以保證數(shù)據(jù)庫的邏輯一致性,但儲(chǔ)過程時(shí),可以保證數(shù)據(jù)庫的邏輯一致性,但 是如果用戶直接在是如果用戶直接在DBMS中中對(duì)對(duì)“借閱表借閱表”表進(jìn)表進(jìn) 行增、刪、改操作呢?行增、刪、改操作呢? 解決方法解決方法:在:在“借閱表借閱表”上定義觸發(fā)器。上定義觸發(fā)器。 觸發(fā)器觸發(fā)器(TRIGGER)是一種特殊類型的存儲(chǔ)過程。是一種特殊類型的存儲(chǔ)過程。 p觸發(fā)器是一種存儲(chǔ)過程,與一般的存儲(chǔ)過程不同的是:觸發(fā)器是一種存儲(chǔ)過程,與一般的存儲(chǔ)過程不同的

16、是: 觸發(fā)器是通過事件觸發(fā)的,而普通的存儲(chǔ)過程需要調(diào)觸發(fā)器是通過事件觸發(fā)的,而普通的存儲(chǔ)過程需要調(diào) 用才執(zhí)行。用才執(zhí)行。 p常見的觸發(fā)器由常見的觸發(fā)器由UPDATE、INSERT、DELETE操作觸操作觸 發(fā),這種觸發(fā)器的稱為發(fā),這種觸發(fā)器的稱為DML觸發(fā)器。也有觸發(fā)器。也有DDL觸發(fā)器,觸發(fā)器, 不常使用。不常使用。 p觸發(fā)器用于保證數(shù)據(jù)完整性,觸發(fā)器用于保證數(shù)據(jù)完整性,凡是約束能提供的保證,凡是約束能提供的保證, 觸發(fā)器都可以提供觸發(fā)器都可以提供,約束無法保證的完整性,觸發(fā)器,約束無法保證的完整性,觸發(fā)器 也能提供。也能提供。 觸發(fā)器的兩種類型觸發(fā)器的兩種類型 INSTEAD OF 觸發(fā)器

17、觸發(fā)器對(duì)數(shù)據(jù)增刪改時(shí),只執(zhí)行觸發(fā)對(duì)數(shù)據(jù)增刪改時(shí),只執(zhí)行觸發(fā) 器中的操作,而不執(zhí)行(器中的操作,而不執(zhí)行( UPDATE、INSERT、 DELETE )操作。)操作。 AFTER觸發(fā)器觸發(fā)器數(shù)據(jù)增刪改操作被臨時(shí)存放,然后與數(shù)據(jù)增刪改操作被臨時(shí)存放,然后與 觸發(fā)器中的操作一起提交,也可以檢查錯(cuò)誤從而回退。觸發(fā)器中的操作一起提交,也可以檢查錯(cuò)誤從而回退。 相當(dāng)于增刪改操作與觸發(fā)器中的操作構(gòu)成一個(gè)事務(wù)。相當(dāng)于增刪改操作與觸發(fā)器中的操作構(gòu)成一個(gè)事務(wù)。 觸發(fā)器的執(zhí)行時(shí)間觸發(fā)器的執(zhí)行時(shí)間 當(dāng)一個(gè)表同時(shí)存在當(dāng)一個(gè)表同時(shí)存在INSTEAD OF觸發(fā)器、觸發(fā)器、AFTER觸發(fā)器觸發(fā)器 和約束時(shí),對(duì)該表中的數(shù)據(jù)進(jìn)

18、行增刪改,則三種數(shù)據(jù)和約束時(shí),對(duì)該表中的數(shù)據(jù)進(jìn)行增刪改,則三種數(shù)據(jù) 庫對(duì)象依次工作,執(zhí)行次序是:庫對(duì)象依次工作,執(zhí)行次序是:執(zhí)行執(zhí)行INSTEAD OF觸觸 發(fā)器發(fā)器-驗(yàn)證約束驗(yàn)證約束-執(zhí)行執(zhí)行AFTER觸發(fā)器觸發(fā)器。 10.4.1 10.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器 DML觸發(fā)器基于觸發(fā)器基于Deleted表和表和Inserted表來工作。表來工作。 Deleted表和表和Inserted表是兩個(gè)臨時(shí)表表是兩個(gè)臨時(shí)表。 執(zhí)行執(zhí)行INSERT操作,被添加的行存儲(chǔ)在操作,被添加的行存儲(chǔ)在Inserted表中。表中。 執(zhí)行執(zhí)行DELETE操作,被刪除的行會(huì)存儲(chǔ)在操作,被刪除的行會(huì)存儲(chǔ)在Delete

19、d表。表。 執(zhí)行執(zhí)行UPDATE操作,被修改的行存儲(chǔ)在操作,被修改的行存儲(chǔ)在Deleted表中,修表中,修 改后的數(shù)據(jù)存儲(chǔ)在改后的數(shù)據(jù)存儲(chǔ)在Inserted表中。表中。 使用觸發(fā)器的建議使用觸發(fā)器的建議 盡量使用約束,僅僅在約束不能滿足要求的時(shí)候使用盡量使用約束,僅僅在約束不能滿足要求的時(shí)候使用 觸發(fā)器。觸發(fā)器。 盡量使用存儲(chǔ)過程為外部用戶提供調(diào)用接口,觸發(fā)器盡量使用存儲(chǔ)過程為外部用戶提供調(diào)用接口,觸發(fā)器 僅用來控制數(shù)據(jù)庫管理員在僅用來控制數(shù)據(jù)庫管理員在DBMS上的更新操作。上的更新操作。 要注意,由于存儲(chǔ)過程中的數(shù)據(jù)更新也會(huì)觸發(fā)要注意,由于存儲(chǔ)過程中的數(shù)據(jù)更新也會(huì)觸發(fā) TRIGGER,因此,

20、要留意避免重復(fù)的操作。例如:,因此,要留意避免重復(fù)的操作。例如: 用戶調(diào)用存儲(chǔ)過程,存儲(chǔ)過程進(jìn)行了三個(gè)關(guān)聯(lián)操作,用戶調(diào)用存儲(chǔ)過程,存儲(chǔ)過程進(jìn)行了三個(gè)關(guān)聯(lián)操作, 其中的某個(gè)操作上觸發(fā)器也要求進(jìn)行關(guān)聯(lián)操作,這樣其中的某個(gè)操作上觸發(fā)器也要求進(jìn)行關(guān)聯(lián)操作,這樣 就產(chǎn)生了重復(fù)。就產(chǎn)生了重復(fù)。 課堂練習(xí):請(qǐng)回答觸發(fā)情況課堂練習(xí):請(qǐng)回答觸發(fā)情況 -select * from 學(xué)生表學(xué)生表 -select * from 成績表成績表 CREATE TRIGGER TR_學(xué)生表學(xué)生表 ON 學(xué)生表學(xué)生表 INSTEAD OF INSERT AS IF (SELECT Count(*) FROM 學(xué)生表學(xué)生表WH

21、ERE 性別性別=男男) 5 select * from inserted CREATE TRIGGER TR_學(xué)生表學(xué)生表 ON 學(xué)生表學(xué)生表 for INSERT,DELETE,UPDATE AS BEGIN UPDATE 學(xué)生表學(xué)生表 SET 年齡年齡=年齡年齡+10 WHERE 學(xué)號(hào)學(xué)號(hào)= 001 -UPDATE 學(xué)生表學(xué)生表 SET 年齡年齡=年齡年齡+10 WHERE 學(xué)號(hào)學(xué)號(hào)= 100 if error0 rollback END 注意:觸發(fā)器中的注意:觸發(fā)器中的rollback將使將使INSERT,DELETE,UPDATE等操作回退等操作回退 insert 學(xué)生表學(xué)生表 values(022,劉二劉二,男男,19,05002,60.0,從化從化,廣州大學(xué)廣州大學(xué)) UPDATE 學(xué)生表學(xué)生表 set 學(xué)分學(xué)分=74 總結(jié)總結(jié) 事務(wù)是一個(gè)操作序列,它包含了一組數(shù)據(jù)庫操作命令,事務(wù)是一個(gè)操作序列,它包含了一組數(shù)據(jù)庫操作命令, 所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作 請(qǐng)求,即要么都執(zhí)行,要么都不執(zhí)行。通常在程序中請(qǐng)求,即要么都執(zhí)行,要么

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論