mssql觸發(fā)器及存儲過程的創(chuàng)建

mssql觸發(fā)器及存儲過程的創(chuàng)建

ID:35478197

大?。?7.18 KB

頁數(shù):13頁

時間:2019-03-25

mssql觸發(fā)器及存儲過程的創(chuàng)建_第1頁
mssql觸發(fā)器及存儲過程的創(chuàng)建_第2頁
mssql觸發(fā)器及存儲過程的創(chuàng)建_第3頁
mssql觸發(fā)器及存儲過程的創(chuàng)建_第4頁
mssql觸發(fā)器及存儲過程的創(chuàng)建_第5頁
資源描述:

《mssql觸發(fā)器及存儲過程的創(chuàng)建》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、觸發(fā)器(trigger)是個特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),如在往表中插入記錄、更新記錄或者刪除記錄時被自動地激活。所以觸發(fā)器可以用來實現(xiàn)對表實施復(fù)雜的完整性約'束。比如當對一個表進行操作(insert,delete,update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。觸發(fā)器可以從DBATRIGGERS,USERTRIGGERS數(shù)據(jù)字典中查到。二:SQLServer為每個觸發(fā)器都創(chuàng)建了兩個專用表:Inserted表和Deleted表。這兩個表由系統(tǒng)來維護,它們存在于內(nèi)存中而不是在數(shù)據(jù)庫中。這兩個表的結(jié)構(gòu)總是與被該觸發(fā)器作用的

2、表的結(jié)構(gòu)相同。觸發(fā)器執(zhí)行完成后,與該觸發(fā)器相關(guān)的這兩個表也被刪除。Deleted表存放由于執(zhí)行Delete或Update語句而要從表中刪除的所有行。Inserted表存放由于執(zhí)行Insert或Update語句而要向表中插入的所有行。三:Insteadof和After觸發(fā)器SQLServer2000提供了兩種觸發(fā)器:Insteadof和After觸發(fā)器。這兩種觸發(fā)器的差別在于他們被激活的同:Insteadof觸發(fā)器用于替代引起觸發(fā)器執(zhí)行的T-SQL語句。除表之外,Insteadof觸發(fā)器也可以用于視圖,用來擴展視圖可以支持的更新操作。After觸發(fā)器在一個Insert,Update或Delete

3、d語句之后執(zhí)行,進行約束檢查等動作都在After觸發(fā)器被激活之前發(fā)生。After觸發(fā)器只能用于表。一個表或視圖的每一個修改動作(insert,update和delete)都可以有一個insteadof觸發(fā)器,一個表的每個修改動作都可以有多個After觸發(fā)器。四:觸發(fā)器的執(zhí)行過程如果一個Insert>update或者delete語句違反了約束,那幺After觸發(fā)器不會執(zhí)行,I次I為對約束的檢查是在After?觸發(fā)器被激動之前發(fā)生的。所以After觸發(fā)器不能超越約束。Insteadof觸發(fā)器可以取代激發(fā)它的操作來執(zhí)行。它在Inserted表和Deleted表剛剛建立,其它任何操作還沒有發(fā)生時被執(zhí)行

4、。因為Insteadof觸發(fā)器在約束之前執(zhí)行,所以它可以對約束進行一些預(yù)處理。五:使用T-SQL語句來創(chuàng)建觸發(fā)器基本語句如下:createtriggertrigger_nameon{table_name

5、view_name}{for

6、After

7、Insteadof}[insert,update,delete]assql_statement六:刪除觸發(fā)器:基本語句如下:droptriggertrigger_name七:查看數(shù)據(jù)庫中已有觸發(fā)器:-查看數(shù)據(jù)庫已有觸發(fā)器usejxcSoftwaregoselect*fromsysobjectswherextype=*TR'-查看單個觸發(fā)器execsp_

8、helptext觸發(fā)器名'八:修改觸發(fā)器:基本語句如下:altertriggertrigger_nameon{table_name

9、view_name}{for

10、After

11、Insteadof}[insert,update,deleteJassql_statement九:相關(guān)示例:1:在Orders表中建立觸發(fā)器,當向Orders表中插入一條訂單記錄時,檢查goods表的貨品狀態(tài)status是凸為1(正在整理),是,則不能往Orders表加入該訂單。createtriggerorderinsertonordersafterinsertasif(selectstatusfromgoods,ins

12、ertedwheregoods.name=inserted.goodsname)=1beginprint'thegoodsisbeingprocessed'print'theordercannotbecommitted1rollbacktransaction一回滾,避免加入end2:在Orders表建立一個插入觸發(fā)器,在添加一條訂單口寸,減少Goods表相應(yīng)的貨品記錄中的庫存。createtriggerorderinsert1onordersafterinsertasupdategoodssetstorage=storage-inserted.quantityfromgoods,inserte

13、dwheregoods.name=inserted.goodsname3:在Goods表建立刪除觸發(fā)器,實現(xiàn)Goods表和Orders表的級聯(lián)刪除。createtriggergoodsdeleteongoodsafterdeleteasdeletefromorderswheregoodsnamein(selectnamefromdeleted)1:在Orders表建立一個更新觸發(fā)器,監(jiān)視Order

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。