sql觸發(fā)器實(shí)例講解1

sql觸發(fā)器實(shí)例講解1

ID:34726204

大?。?26.68 KB

頁數(shù):9頁

時(shí)間:2019-03-10

sql觸發(fā)器實(shí)例講解1_第1頁
sql觸發(fā)器實(shí)例講解1_第2頁
sql觸發(fā)器實(shí)例講解1_第3頁
sql觸發(fā)器實(shí)例講解1_第4頁
sql觸發(fā)器實(shí)例講解1_第5頁
資源描述:

《sql觸發(fā)器實(shí)例講解1》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、SQL觸發(fā)器實(shí)例1定義:何為觸發(fā)器?在SQLServer里面也就是對(duì)某一個(gè)表的一定的操作,觸發(fā)某種條件,從而執(zhí)行的一段程序。觸發(fā)器是一個(gè)特殊的存儲(chǔ)過程。??????常見的觸發(fā)器有三種:分別應(yīng)用于Insert,Update,Delete事件。??????我為什么要使用觸發(fā)器?比如,這么兩個(gè)表:??????CreateTableStudent(?????????????--學(xué)生表????????StudentIDintprimarykey,??????--學(xué)號(hào)????????....???????)???

2、???CreateTableBorrowRecord(??????????????--學(xué)生借書記錄表????????BorrowRecord??intidentity(1,1),??????--流水號(hào)??????????StudentID?????int,???????????????????--學(xué)號(hào)????????BorrowDate????datetime,???????????????--借出時(shí)間????????ReturnDAte????Datetime,???????????????--歸還

3、時(shí)間????????...??????)?????用到的功能有:????????1.如果我更改了學(xué)生的學(xué)號(hào),我希望他的借書記錄仍然與這個(gè)學(xué)生相關(guān)(也就是同時(shí)更改借書記錄表的學(xué)號(hào));????????2.如果該學(xué)生已經(jīng)畢業(yè),我希望刪除他的學(xué)號(hào)的同時(shí),也刪除它的借書記錄。?????等等。?????這時(shí)候可以用到觸發(fā)器。對(duì)于1,創(chuàng)建一個(gè)Update觸發(fā)器:?????CreateTriggertruStudent???????OnStudent????????????????????????--在Student

4、表中創(chuàng)建觸發(fā)器???????forUpdate?????????????????????????--為什么事件觸發(fā)?????As???????????????????????????????????????--事件觸發(fā)后所要做的事情???????ifUpdate(StudentID)??????????????????begin?????????UpdateBorrowRecord???????????SetStudentID=i.StudentID???????????FromBorrowRecor

5、dbr,Deleted??d,Insertedi?????--Deleted和Inserted臨時(shí)表???????????Wherebr.StudentID=d.StudentID???????end?????????????????????????????理解觸發(fā)器里面的兩個(gè)臨時(shí)的表:Deleted,Inserted。注意Deleted與Inserted分別表示觸發(fā)事件的表“舊的一條記錄”和“新的一條記錄”。?????一個(gè)數(shù)據(jù)庫系統(tǒng)中有兩個(gè)虛擬表用于存儲(chǔ)在表中記錄改動(dòng)的信息,分別是:????????

6、?????????????????????虛擬表Inserted????????????????????虛擬表Deleted?在表記錄新增時(shí)????存放新增的記錄????????????????????????不存儲(chǔ)記錄?????????修改時(shí)??????????存放用來更新的新記錄??????????????????存放更新前的記錄?????????刪除時(shí)??????????不存儲(chǔ)記錄????????????????????????????存放被刪除的記錄?????一個(gè)Update的過程可以看作為:

7、生成新的記錄到Inserted表,復(fù)制舊的記錄到Deleted表,然后刪除Student記錄并寫入新紀(jì)錄。?????對(duì)于2,創(chuàng)建一個(gè)Delete觸發(fā)器?????CreatetriggertrdStudent???????OnStudent???????forDelete?????As???????DeleteBorrowRecord?????????FromBorrowRecordbr,Deltedd?????????Wherebr.StudentID=d.StudentID?????從這兩個(gè)例子我們

8、可以看到了觸發(fā)器的關(guān)鍵:A.2個(gè)臨時(shí)的表;B.觸發(fā)機(jī)制。?SQL觸發(fā)器實(shí)例2/*?建立虛擬測(cè)試環(huán)境,包含:表[卷煙庫存表],表[卷煙銷售表]。?請(qǐng)大家注意跟蹤這兩個(gè)表的數(shù)據(jù),體會(huì)觸發(fā)器到底執(zhí)行了什么業(yè)務(wù)邏輯,對(duì)數(shù)據(jù)有什么影響。?為了能更清晰的表述觸發(fā)器的作用,表結(jié)構(gòu)存在數(shù)據(jù)冗余,且不符合第三范式,這里特此說明。?*/?USEMaster?GO?IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHEREXTYPE=’U’ANDNAME=’

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

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

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