觸發(fā)器事務(wù)自定義函數(shù)_第1頁
觸發(fā)器事務(wù)自定義函數(shù)_第2頁
觸發(fā)器事務(wù)自定義函數(shù)_第3頁
觸發(fā)器事務(wù)自定義函數(shù)_第4頁
觸發(fā)器事務(wù)自定義函數(shù)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 觸發(fā)器是在對表進行插入、更新或刪除觸發(fā)器是在對表進行插入、更新或刪除操作時自動執(zhí)行的操作時自動執(zhí)行的存儲過程存儲過程 觸發(fā)器可以確保數(shù)據(jù)的完整性和一致性觸發(fā)器可以確保數(shù)據(jù)的完整性和一致性 觸發(fā)器可以通過企業(yè)管理器或者查詢分析器來創(chuàng)建。觸發(fā)器可以通過企業(yè)管理器或者查詢分析器來創(chuàng)建。 語法:語法:CREATE TRIGGER 觸發(fā)觸發(fā)器名器名稱稱ON 表表/視圖視圖-觸發(fā)器表或觸發(fā)器視圖觸發(fā)器表或觸發(fā)器視圖WITH ENCRYPTIONFOR DELETE, INSERT, UPDATEAS T-Sql語語句句 觸發(fā)器觸發(fā)器可以與對可以與對表表執(zhí)行的三個操作(執(zhí)行的三個操作(INSERT、 UP

2、DATE 和和 DELETE)相關(guān)聯(lián)相關(guān)聯(lián) 觸發(fā)器可以引用視圖或臨時表,觸發(fā)器可以引用視圖或臨時表, 一個觸發(fā)器一個觸發(fā)器只只應(yīng)應(yīng)用于單用于單獨一個獨一個表表或視圖或視圖 WITH ENCRYPTION選項可用于對用戶隱藏觸發(fā)器選項可用于對用戶隱藏觸發(fā)器 的的定義。但是,加密定義。但是,加密的的觸發(fā)器觸發(fā)器無法進行無法進行解密解密 觸發(fā)器可以包含任意數(shù)觸發(fā)器可以包含任意數(shù)量量的的 SQL SQL 語句語句 默認情況下,只有數(shù)據(jù)庫所有者才默認情況下,只有數(shù)據(jù)庫所有者才具有具有創(chuàng)建創(chuàng)建觸發(fā)器觸發(fā)器的權(quán)限的權(quán)限。此此權(quán)限不可權(quán)限不可轉(zhuǎn)讓轉(zhuǎn)讓。 觸發(fā)器只能在當前數(shù)據(jù)庫中創(chuàng)建。觸發(fā)器只能在當前數(shù)據(jù)庫中創(chuàng)

3、建。 但是,但是,觸發(fā)器可以引用其他數(shù)據(jù)庫觸發(fā)器可以引用其他數(shù)據(jù)庫中的中的對象。對象。 觸發(fā)器觸發(fā)器可以可以訪問兩個邏輯表訪問兩個邏輯表- Inserted表表- Deleted表表 Inserted 和和Deleted 表表包含包含更新前和更新前和更新后的更新后的數(shù)據(jù)映像數(shù)據(jù)映像 Inserted和和Deleted表中不表中不包含表中不受包含表中不受更新操更新操作作 影響的數(shù)據(jù)影響的數(shù)據(jù)insert觸發(fā)器觸發(fā)器update觸發(fā)器觸發(fā)器delete觸發(fā)器觸發(fā)器 當當試圖向試圖向表中表中插入數(shù)據(jù)插入數(shù)據(jù)時,時,將執(zhí)行將執(zhí)行 INSERT INSERT 觸發(fā)器觸發(fā)器 INSERT 觸發(fā)器執(zhí)行下列操

4、作:觸發(fā)器執(zhí)行下列操作: 向向Inserted表中插入一個新行表中插入一個新行的的副本。副本。 檢查檢查Inserted 表中的新行,確定是否要阻止該插表中的新行,確定是否要阻止該插入操作。入操作。 如果如果所所插入插入的的行中的值是行中的值是有效有效的,的,則則將該行插將該行插入到觸發(fā)入到觸發(fā)器器表中。表中。 當當試圖試圖從表中刪除數(shù)據(jù)時,從表中刪除數(shù)據(jù)時,將執(zhí)行將執(zhí)行DELETE 觸發(fā)器。觸發(fā)器。 DELETE觸發(fā)器執(zhí)行下列操作:觸發(fā)器執(zhí)行下列操作: 從觸發(fā)從觸發(fā)器器表中刪除行。表中刪除行。 將刪除將刪除的的行插入行插入到到Deleted表中。表中。 檢查檢查Deleted表中的行,以確定

5、是否需要表中的行,以確定是否需要或應(yīng)如何執(zhí)行觸發(fā)器操作?;驊?yīng)如何執(zhí)行觸發(fā)器操作。 當當試圖試圖更新表中的數(shù)據(jù)時,更新表中的數(shù)據(jù)時,將執(zhí)行將執(zhí)行UPDATE觸發(fā)器觸發(fā)器 UPDATE 觸發(fā)器執(zhí)行下列操作:觸發(fā)器執(zhí)行下列操作: 將原始數(shù)據(jù)行移到邏輯將原始數(shù)據(jù)行移到邏輯Deleted表中表中 將一個新行插入將一個新行插入Inserted表表中,然后插入中,然后插入觸發(fā)觸發(fā)器器表中表中 計算計算Deleted表和表和Inserted表中的值以確定是否需表中的值以確定是否需要進行干預(yù)要進行干預(yù)CREATE TRIGGER update_trigger1ON goodsFOR UPDATE AS/*檢查商

6、品編號列或商品類型編號列是否被修改,如果有某些列被修改了,則取消修改操作*/IF UPDATE(goods_id) OR UPDATE(goods_type_id)BEGINPRINT 違背數(shù)據(jù)的一致性ROLLBACK TRANSACTIONENDGO例:在例:在shop數(shù)據(jù)庫的數(shù)據(jù)庫的goods表上創(chuàng)建一個表上創(chuàng)建一個UPDATE觸發(fā)器,若對觸發(fā)器,若對商品編號列或商品編號列或商品類型編號列商品類型編號列修改,則給出提示信息,并取消修改操作。修改,則給出提示信息,并取消修改操作。IF EXISTS (SELECT name FROM sysobjects WHERE name = remin

7、der AND type = TR)DROP TRIGGER reminderGOCREATE TRIGGER reminder ON goodsFOR INSERT, UPDATE ,deleteASBEGINDECLARE str char(50)SET str=TRIGGER IS WORKINGPRINT strENDGO例:對于例:對于shop數(shù)據(jù)庫,如果在數(shù)據(jù)庫,如果在goods表中添加或更改數(shù)據(jù),表中添加或更改數(shù)據(jù),則向客戶端顯示一條則向客戶端顯示一條“TRIGGER IS WORKING”的信息。的信息。SQL 語句語句CREATE DATABASEALTER DATABASE

8、DROP DATABASELOAD DATABASERECONFIGURERESTORE LOGDISK INITDISK RESIZELOAD LOGRESTORE DATABASE1創(chuàng)建觸發(fā)器(1)通過界面方式只能創(chuàng)建DML觸發(fā)器。以在表XS上創(chuàng)建觸發(fā)器為例,利用“對象資源管理器”創(chuàng)建DML觸發(fā)器步驟如下:啟動“SQL Server Management Studio”,在“對象資源管理器”中展開“數(shù)據(jù)庫”“XSBOOK”“表”“dbo.XS”選擇其中的“觸發(fā)器”目錄,在該目錄下可以看到之前已經(jīng)創(chuàng)建的XS表的觸發(fā)器。右擊“觸發(fā)器”,在彈出的快捷菜單中選擇“新建觸發(fā)器”菜單項。在打開的“觸發(fā)

9、器腳本編輯”窗口輸入相應(yīng)的創(chuàng)建觸發(fā)器的命令。輸入完成后,單擊“執(zhí)行”按鈕,若執(zhí)行成功,則觸發(fā)器創(chuàng)建完成。(2)查看DDL觸發(fā)器。DDL觸發(fā)器不可以使用界面方式創(chuàng)建,DDL觸發(fā)器分為數(shù)據(jù)庫觸發(fā)器和服務(wù)器觸發(fā)器,展開“數(shù)據(jù)庫”“XSBOOK”“可編程性”“數(shù)據(jù)庫觸發(fā)器”就可以查看到有哪些數(shù)據(jù)庫觸發(fā)器。展開“數(shù)據(jù)庫”“服務(wù)器對象”“觸發(fā)器”就可以查看到有哪些服務(wù)器觸發(fā)器。2修改觸發(fā)器DML觸發(fā)器能夠使用界面方式修改,DDL觸發(fā)器則不可以。進入“對象資源管理器”,修改觸發(fā)器的步驟與創(chuàng)建的步驟相同,在“對象資源管理器”中選擇要修改的“觸發(fā)器”,右擊鼠標,在彈出的快捷菜單中選擇“修改”菜單項,打開“觸發(fā)器

10、腳本編輯”窗口,在該窗口中可以進行觸發(fā)器的修改,修改后單擊“執(zhí)行”按鈕重新執(zhí)行即可。但是被設(shè)置成“WITH ENCRYPTION”的觸發(fā)器是不能被修改的。3刪除觸發(fā)器(1)刪除DML觸發(fā)器。以XS表的DML觸發(fā)器為例,在“對象資源管理器”中展開“數(shù)據(jù)庫”“XSBOOK”“表”“dbo.XS”“觸發(fā)器”選擇要刪除的觸發(fā)器名稱,右擊鼠標,在彈出的快捷菜單中選擇“刪除”菜單項,在彈出的“刪除對象”窗口中單擊“確定”按鈕,即可完成觸發(fā)器的刪除操作。(2)刪除DDL觸發(fā)器。刪除DDL觸發(fā)器與刪除DML觸發(fā)器的方法類似,首先找到要刪除的觸發(fā)器,右擊鼠標,選擇“刪除”選項即可。 事務(wù)是指一個單元的工作事務(wù)是

11、指一個單元的工作 事務(wù)具有四個屬性:原子性、一致性、事務(wù)具有四個屬性:原子性、一致性、隔離性、耐久性隔離性、耐久性Bigin transactionBigin transaction 語句語句1 1 語句語句22If(If(成功成功) ) commit transactionElse rollback transactionCREATE FUNCTION 函數(shù)名稱函數(shù)名稱(參數(shù)名稱參數(shù)名稱 數(shù)據(jù)類型數(shù)據(jù)類型,n,n)RETURNS 返回值的數(shù)據(jù)類型返回值的數(shù)據(jù)類型ASBEGIN函數(shù)內(nèi)容函數(shù)內(nèi)容RETURN 返回的數(shù)據(jù)返回的數(shù)據(jù)表達式表達式END 本章首頁本章首頁調(diào)用用戶自定義函數(shù)的基本語法為:調(diào)用用戶自定義函數(shù)的基本語法為:變量變量=用戶名用戶名.函數(shù)名稱(實際參數(shù)列表)函數(shù)名稱(實際參數(shù)列表)注意:在調(diào)用返回數(shù)值的用戶自定義函注意:在調(diào)用返回數(shù)值的用戶自定義函數(shù)時,一定要在函數(shù)名稱的前面加上用數(shù)時,一定要在函數(shù)名稱的前面加上用戶名戶名 創(chuàng)建函數(shù)創(chuàng)建函數(shù)CREATE FUNCTION udf_age

溫馨提示

  • 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

提交評論