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

下載本文檔

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

文檔簡介

實驗六存儲過程和觸發(fā)器一、目的與要求掌握編寫數(shù)據(jù)庫存儲過程的方法。掌握建立數(shù)據(jù)庫觸發(fā)器的方法,通過實驗觀察觸發(fā)器的作用和觸發(fā)條件設(shè)置等相關(guān)操作。二、實驗準備了解編寫存儲過程和調(diào)用的T-SQL語法;了解觸發(fā)器的作用;了解編寫觸發(fā)器的T-SQL語法。三、實驗內(nèi)容存儲過程在studentdb數(shù)據(jù)庫中建立存儲過程getPractice,查詢指定院系(名稱)(作為存儲過程的輸入?yún)?shù))中參與“實踐”課程學(xué)習(xí)的所有學(xué)生學(xué)號、姓名、所學(xué)課程編號和課程名稱,若院系不存在,返回提示信息。提示:D_Info表中存儲了院系代碼D_ID,而St_Info表中學(xué)號字段St_ID的前兩位與之對應(yīng),則D_Info表與St_Info表之間的聯(lián)系通過這兩個字段的運算構(gòu)成連接條件。分別執(zhí)行存儲過程getPractice,查詢“法學(xué)院”和“材料科學(xué)與工程學(xué)院”的學(xué)生中參與“實踐”課程的所有學(xué)生學(xué)號、姓名、所學(xué)課程編號和課程名稱。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四、思考與練習(xí)1.存儲過程如何加密?Createprocedureencrypt_thisWithencryption--加密,在存儲過程添加這一語句即可ASSelect*fromuser_tbGO查看存儲過程儲存的文本:Execsp_helptextencrypt_this下面是結(jié)果集:Theproject’scommentshavebeenencrypted.--對象已經(jīng)被加密2.觸發(fā)器有什么好處和壞處?使用觸發(fā)器的好處:1.自動執(zhí)行。觸發(fā)器在對表的數(shù)據(jù)作了任何修改(比如手工輸入或者應(yīng)用程序的操作)之后立即被激活。2.級聯(lián)更新。觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表進行層疊更改,這比直接把代碼寫在前臺的做法更安全合理。3.強化約束。觸發(fā)器可以引用其它表中的列,能夠?qū)崿F(xiàn)比CHECK約束更為復(fù)雜的約束。4.跟蹤變化。觸發(fā)器可以阻止數(shù)據(jù)庫中未經(jīng)許可的指定更新和變化。5.強制業(yè)務(wù)邏輯。觸發(fā)器可用于執(zhí)行管理任務(wù),并強制影響數(shù)據(jù)庫的

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論