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

下載本文檔

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

文檔簡介

1、事務(wù),2,目錄,4.創(chuàng)建修改與刪除觸發(fā)器,3.解發(fā)器的概念和特點,2.顯式事務(wù)/隱式事務(wù)/自動事務(wù)的講解,1.事務(wù)概念和分類,5. 總結(jié),3,事務(wù)概念,事務(wù)是SQL中的單個邏輯工作單元,一個 事務(wù)里的所有語句被作為整體執(zhí)行 遇到錯誤時,可以回滾事務(wù)內(nèi)的所有改變,從而保證數(shù)據(jù)庫的一致性和可恢復(fù)性 一個邏輯工作單元必須具有四種屬性,也稱為ACID,4,事務(wù)概念-事務(wù)的四種屬性,原子性(Atomicity):一個事務(wù)必須作為工作的原子單位,它所做的數(shù)據(jù)修改要么全部執(zhí)行,要么全部取消 一致性(Consistency):當事務(wù)完成后,所有數(shù)據(jù)必須處于一致性狀態(tài),即:事務(wù)所修改的數(shù)據(jù)必須遵循數(shù)據(jù)庫中各種約

2、束、規(guī)則要求,保持數(shù)據(jù)的完整性 隔離性(Isolation):一個事務(wù)所做的修改必須能夠與其他事務(wù)所做的修改隔離開來;在并發(fā)處理過程中,一個事務(wù)所看到的數(shù)據(jù)狀態(tài)必須為另一個事務(wù)處理前或后的數(shù)據(jù) 永久性(Durability):事務(wù)完成后,它對數(shù)據(jù)庫所做的修改被永久保留下來。事務(wù)日志保證事務(wù)的永久性,5,事務(wù)分類,顯式事務(wù):由用戶執(zhí)行T-SQL事務(wù)語句而定義的事務(wù),又稱為用戶定義事務(wù) 隱式事務(wù):當前事務(wù)提交或回滾后,SQL自動開始的事務(wù)。使用implicit_transations選項打開隱式事務(wù)。 自動事務(wù)模式:在自動事務(wù)模式下,當一個語句被成功執(zhí)行后,它被自動提交,而當它執(zhí)行過程中產(chǎn)生錯誤時

3、,則被自動回滾。自動事務(wù)模式是SQL的默認管理模式,6,事務(wù)分類 -自動模式下批的執(zhí)行情況,在執(zhí)行批的過程中,批中的一個語句發(fā)生錯誤,批中的所有語句將不被執(zhí)行 示例: 備注,7,事務(wù)分類 -事務(wù)處理語句,begin transaction:建立一個顯式事務(wù) commit transaction:標識一個隱式或顯式事務(wù)的結(jié)束 rollback transaction:將一個隱式或顯式事務(wù)回滾到事務(wù)開始位置或指定的存儲點位置 save transaction:在一個事務(wù)內(nèi)建立一個存儲點標記,使rollback transaction語句可使用該標記回滾部分事務(wù)操作,8,事務(wù)分類 -注意點,在定義一

4、個事務(wù)時,begin transaction語句應(yīng)與commit transaction或rollback transaction成對出現(xiàn) 事務(wù)定義語句可以嵌套,但只有最外層的begin transaction和commit transaction語句才能建立和提交事務(wù);在回滾事務(wù)時也只能使用最外層定義的事務(wù)名或存儲點標記 事務(wù)嵌套常用在存儲過程或觸發(fā)器內(nèi),應(yīng)盡量避免事務(wù)的嵌套 在事務(wù)定義中,不能使用數(shù)據(jù)庫選項設(shè)置或系統(tǒng)存儲過程修改master數(shù)據(jù)庫,9,事務(wù)分類- (示例),建立一個用戶定義事務(wù)及事務(wù)的回滾操作和事務(wù)中的存儲點回滾 示例: 備注,10,事務(wù)分類 - (示例2),備注中的例子說

5、明隱式事務(wù)的處理過程。在打開implicit_transactions連接選項后,自動進入第一個隱式事務(wù)。在前一個隱式事務(wù)提交或回滾后,SQL自動進入下一個新的隱式事務(wù)。,觸發(fā)器,12,觸發(fā)器特點與應(yīng)用范圍,是一種特殊類型的存儲過程,基于某個表或視圖(觸發(fā)表、觸發(fā)視圖)的一個或多個列創(chuàng)建,用于監(jiān)控它們的insert、update、delete操作(觸發(fā)操作),當發(fā)生以上操作時自動執(zhí)行事先定義的步驟,可進行復(fù)雜的數(shù)據(jù)完整性監(jiān)測和約束,13,特點與應(yīng)用范圍-特點,不能直接調(diào)用,只有在對觸發(fā)器表的數(shù)據(jù)進行更改時,才自動執(zhí)行 不能傳遞和接受參數(shù) 觸發(fā)器建立在表一級,與指定的數(shù)據(jù)修改事件相對應(yīng) 觸發(fā)器可

6、以實施更為復(fù)雜的數(shù)據(jù)完整性約束,例如跨數(shù)據(jù)庫的參照性約束,14,特點與應(yīng)用范圍-優(yōu)點,數(shù)據(jù)庫中跨越相關(guān)表的級聯(lián)修改 無論什么原因?qū)τ|發(fā)器表或視圖的數(shù)據(jù)進行修改時,都能激活觸發(fā)器,從而對數(shù)據(jù)實施完整性檢查 觸發(fā)器能夠?qū)嵤┍萷rimary key約束、check約束和規(guī)則對象等更為復(fù)雜的檢查和操作 定義自定義的錯誤信息,15,特點與應(yīng)用范圍 -觸發(fā)器vs約束,在SQL Server的早期版本中,通常使用觸發(fā)器來實現(xiàn)參照完整性 6.0以后版本中使用PK和FK來實現(xiàn)簡單的參照完整性,但對于要參照其他數(shù)據(jù)庫對象的參照完整性約束只能使用觸發(fā)器 CHECK約束只能引用當前列(列級)或當前表(表級)的列值,而

7、觸發(fā)器則可以引用其他表的列值 觸發(fā)器可以是后反應(yīng)的,而約束是前反應(yīng)的,16,創(chuàng)建觸發(fā)器,語法: create trigger trigger_name on table | view with encryption for | after | instead of insert,update,delete as sql_statement ,17,創(chuàng)建觸發(fā)器-觸發(fā)器的類型,后觸發(fā)器(FOR、AFTER):在觸發(fā)操作執(zhí)行完成后才進行觸發(fā)器定義的操作 前(替代)觸發(fā)器(instead of):在進行觸發(fā)操作時,不執(zhí)行觸發(fā)操作,取而代之觸發(fā)器定義的操作,18,創(chuàng)建觸發(fā)器- (示例),create t

8、able tb_trigger1( col1 int identity,col2 char(10) null) create trigger trigger1_1 on tb_trigger1 for insert as if update(col2) print col2列被修改!,19,創(chuàng)建觸發(fā)器-注意點,在調(diào)用create trigger語句時,必須為批中的第一個語句 當約束與觸發(fā)器同時存在時,先檢查約束 表的任何動作都可以有多個觸發(fā)器 用戶必須具備執(zhí)行觸發(fā)器定義的所有語句的權(quán)限 不可以在視力和臨時表上創(chuàng)建after觸發(fā)器,但可以參照這些對象,可以創(chuàng)建instead of觸發(fā)器 如果觸發(fā)

9、器在一個事務(wù)內(nèi),則觸發(fā)器內(nèi)的所有操作均認為是事務(wù)的一部分,20,創(chuàng)建觸發(fā)器- 工作原理,觸發(fā)器執(zhí)行時產(chǎn)生兩個臨時表:inserted和deleted。這兩個表在結(jié)構(gòu)上和觸發(fā)表一樣 執(zhí)行insert語句時,插入到觸發(fā)表的數(shù)據(jù)被插入到inserted表;執(zhí)行delete語句時,從觸發(fā)器中刪除的行被插入deleted表;update語句實際分為delete和insert兩步,21,創(chuàng)建觸發(fā)器-觸發(fā)器嵌套,觸發(fā)器嵌套是指一個觸發(fā)器更改另一個觸發(fā)表中的內(nèi)容時,激活第二個觸發(fā)器,第二個觸發(fā)器又以同樣的方式激活第三個,等等 最大嵌套級數(shù)是32級,如果嵌套級數(shù)超過32級,則整個調(diào)用鏈均不執(zhí)行 使用nested triggers服務(wù)器選項控制是否允許觸發(fā)器嵌套 sp_configure nested triggers,1,22,創(chuàng)建觸發(fā)器-遞歸調(diào)用,遞歸是觸發(fā)器嵌套的特殊類型 直接遞歸 間接遞歸 只有當將recursive_triggers數(shù)據(jù)庫選項設(shè)置為on時,才可以直接遞歸調(diào),nested triggers選項設(shè)置控制嵌套調(diào)用 instead of觸發(fā)器不產(chǎn)生遞歸調(diào)用,23,修改與刪除觸發(fā)器,使用alter trigger語句,和create trigger基本一樣 刪除觸發(fā)器 drop trigger trigger_name,24,總結(jié),事務(wù)概念 事務(wù)分類 顯式

溫馨提示

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

評論

0/150

提交評論