實驗六-存儲過程和觸發(fā)器_第1頁
實驗六-存儲過程和觸發(fā)器_第2頁
實驗六-存儲過程和觸發(fā)器_第3頁
實驗六-存儲過程和觸發(fā)器_第4頁
實驗六-存儲過程和觸發(fā)器_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗六存儲過程和觸發(fā)器一、目的與要求掌握編寫數(shù)據(jù)庫存儲過程的方法。掌握建立數(shù)據(jù)庫觸發(fā)器的方法,通過實驗觀察觸發(fā)器的作用和觸發(fā)條件設置等相關操作。二、實驗準備了解編寫存儲過程和調用的T-SQL語法;了解觸發(fā)器的作用;了解編寫觸發(fā)器的T-SQL語法。三、實驗內容存儲過程在studentdb數(shù)據(jù)庫中建立存儲過程getPractice,查詢指定院系(名稱)(作為存儲過程的輸入?yún)?shù))中參與“實踐”課程學習的所有學生學號、姓名、所學課程編號和課程名稱,若院系不存在,返回提示信息。提示:D_Info表中存儲了院系代碼D_ID,而St_Info表中學號字段St_ID的前兩位與之對應,則D_Info表與St_Info表之間的聯(lián)系通過這兩個字段的運算構成連接條件。分別執(zhí)行存儲過程getPractice,查詢“法學院”和“材料科學與工程學院”的學生中參與“實踐”課程的所有學生學號、姓名、所學課程編號和課程名稱。createproceduregetPractice@D_Namevarchar(30)outputasbeginifnotexists(select*fromD_InfowhereD_Name=@D_Name)print'對不起,該院系不存在'elseselectst_info.St_ID,C_Info.C_No,C_Namefroms_c_infoinnerjoinst_infoonst_info.St_ID=s_c_info.st_idinnerjoinC_Infoons_c_info.c_no=C_Info.C_Nowherest_info.St_IDin(selectSt_IDfromst_infojoinD_InfoonD_Info.D_ID=left(st_info.St_ID,2)whereC_Info.C_Type='實踐'andD_Info.D_Name=@D_Name)endgooldscoreint,newscoreint,unamevarchar(10)defaultuser,udatadatetimedefaultgetdate())gocreatetriggertr_scons_c_infoforinsert,updateasifupdate(score)beginif(selectcount(*)fromdeleted)<>0insertintosc_log(type,st_id,c_no,oldscore,newscore)select'update',s_c_info.st_id,s_c_info.c_no,i.score,d.scorefroms_c_info,insertedi,deleteddwheres_c_info.st_id=i.st_idandi.st_id=d.st_idelseinsertintosc_log(type,st_id,c_no,newscore)select'insert',st_id,c_no,scorefrominsertedendgo在s_c_info表上建立一個觸發(fā)器tr_updasc,用于監(jiān)控對成績的更新,要求更新后的成績不能比更新前低,如果新成績低則取消操作,給出提示信息,否則允許更新。createtriggertr_updascons_c_infoafterupdateasdeclare@cj1int,@cj2intselect@cj1=deleted.scorefromdeletedselect@cj2=inserted.scorefrominsertedif(@cj2<@cj1)beginraiserror('新成績比老成績低,取消操作',16,1)rollbacktransactionendgo(三)查看存儲過程和觸發(fā)器的信息1.用sp_help查看以上建立的存儲過程和觸發(fā)器的基本信息sp_helptr_scgosp_helptr_updascgo2.用sp_helptext查看存儲過程和觸發(fā)器的代碼sp_helptexttr_scgosp_helptexttr_updascgo四、思考與練習1.存儲過程如何加密?Createprocedureencrypt_thisWithencryption--加密,在存儲過程添加這一語句即可ASSelect*fromuser_tbGO查看存儲過程儲存的文本:Execsp_helptextencrypt_this下面是結果集:Theproject’scommentshavebeenencrypted.--對象已經(jīng)被加密2.觸發(fā)器有什么好處和壞處?使用觸發(fā)器的好處:1.自動執(zhí)行。觸發(fā)器在對表的數(shù)據(jù)作了任何修改(比如手工輸入或者應用程序的操作)之后立即被激活。2.級聯(lián)更新。觸發(fā)器可以通過數(shù)據(jù)庫中的相關表進行層疊更改,這比直接把代碼寫在前臺的做法更安全合理。3.強化約束。觸發(fā)器可以引用其它表中的列,能夠實現(xiàn)比CHECK約束更為復雜的約束。4.跟蹤變化。觸發(fā)器可以阻止數(shù)據(jù)庫中未經(jīng)許可的指定更新和變化。5.強制業(yè)務邏輯。觸發(fā)器可用于執(zhí)行管理任務,并強制影響數(shù)據(jù)庫的

溫馨提示

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

評論

0/150

提交評論