版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)五:觸發(fā)器和存儲(chǔ)過程一實(shí)驗(yàn)?zāi)康模豪斫庥|發(fā)器和存儲(chǔ)過程的含義,掌握用SQL語句實(shí)現(xiàn)觸發(fā)器和存儲(chǔ)過程的編寫,并初步掌握什么情況下使用事務(wù)。二實(shí)驗(yàn)內(nèi)容:有一個(gè)小型的圖書管理數(shù)據(jù)庫,包含的表為:bookstore(bookid,bookname,bookauthor,purchasedate,state);-圖書庫存表borrowcard(cardid,ownername);-借書證表borrowlog(cardid,bookid,borrowdate,returndate);-借書記錄表寫一個(gè)存儲(chǔ)過程,實(shí)現(xiàn)借書操作,要求有事務(wù)處理。(1)讀者借書,要先設(shè)置書籍不在庫標(biāo)志state(借出),然后增
2、加借書記錄,在同一事務(wù)中完成。 (2)要求在事務(wù)執(zhí)行過程中引入錯(cuò)誤觸發(fā)事件,以此體會(huì)事務(wù)的錯(cuò)誤保護(hù)機(jī)制和事務(wù)編程的作用。(3)要求用觸發(fā)器實(shí)現(xiàn)表的完整性控制。 三、操作與運(yùn)行1.創(chuàng)建圖書數(shù)據(jù)庫:create table bookstore(bookid int not null primary key,bookname char(20),bookauthor char(20),purchasedate datetime,state char(4)create table borrowcard(cardid int not null primary key,ownername char(20)c
3、reate table borrowlog(cardid int not null,bookid int not null,borrowdate datetime,returndate datetime,primary key(cardid,bookid),-foreign key(cardid)references borrowcard(cardid),-foreign key(bookid)references bookstore(bookid)通過以上語句,可以看到數(shù)據(jù)庫中的表建立成功。2.創(chuàng)建存儲(chǔ)過程:create proc book_borrowmycardid_in int,myb
4、ookid_in int,str_out char(30) outputasbeginif not exists(select * from borrowcard where cardid=mycardid_in) beginset str_out=該讀者不存在returnendif(select state from bookstore where bookid=mybookid_in)=借出 beginset str_out=該書以借出endbegin traninsert into borrowlog values(mycardid_in,mybookid_in,getdate(),nu
5、ll)if error0beginrollback transet str_out=執(zhí)行過程中遇到錯(cuò)誤!returnendupdate bookstore set state=借出 where bookid=mybookid_inif error0beginrollback transet str_out=執(zhí)行過程中遇到錯(cuò)誤!returnendif error=0begincommit transet str_out=借書成功!return 1elsebeginrollback transet str_out=執(zhí)行過程中遇到錯(cuò)誤!returnendEnd查看執(zhí)行結(jié)果:執(zhí)行存儲(chǔ)過程:當(dāng)違反參照完
6、整性時(shí):declare str_out char(30)exec book_borrow 1114060119,106,str_out outputprint 執(zhí)行情況 + str_out當(dāng)圖書已借出時(shí)執(zhí)行結(jié)果會(huì)是:declare str_out char(30)exec book_borrow 1114060114,102,str_out outputprint 執(zhí)行情況 + str_out當(dāng)正常執(zhí)行時(shí)(即不違反完整性時(shí)):原先的借書記錄有:正常借書時(shí):declare str_out char(30)exec book_borrow 1114060116,105,str_out output
7、print 執(zhí)行情況 + str_out查看借書記錄:查看圖書在庫狀態(tài):由此可知借書成功。3.創(chuàng)建觸發(fā)器:create trigger delete_borrowlogon bookstorefor deleteas begindelete from borrowlog where bookid in(select bookid from deleted)End執(zhí)行:deletefrom bookstorewhere bookid=102結(jié)果:查看結(jié)束記錄情況:可知?jiǎng)h除觸發(fā)器創(chuàng)建成功。create trigger update_borrowlogon bookstorefor updateas
8、 begindeclare old_bookid int,new_bookid intselect old_bookid=bookid from deletedselect new_bookid=bookid from insertedupdate borrowlog set bookid=new_bookid where bookid=old_bookidEnd執(zhí)行:update bookstoreset bookid=119where bookid=105結(jié)果:可見更新觸發(fā)器創(chuàng)建成功。四問題及解決:創(chuàng)建存儲(chǔ)過程時(shí)不知道如何檢查違反完整性的操作,最后知道可以用iferror0來檢查。創(chuàng)建觸發(fā)器時(shí)剛開始不能創(chuàng)建成,根據(jù)提示知道原來在建表時(shí)已經(jīng)設(shè)置了外鍵,所以棄掉就可以了。五思考題:如何通過系統(tǒng)的設(shè)置實(shí)現(xiàn)類似的功能,而不需觸發(fā)器? 答:可以使用企業(yè)管理其中可視化的建表方法,也可以使用sql語句來在表中增加外鍵約束就可以了。六實(shí)驗(yàn)總結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 20952:2024 EN Footwear - Performance requirements for components for footwear - Uppers
- 《一念永恒》語錄
- 玉溪師范學(xué)院《理論力學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 施工組織總體設(shè)想、方案針對性及施工段劃分
- 2024零代碼新動(dòng)能4.0 -企業(yè)零代碼數(shù)字化創(chuàng)新實(shí)踐案例集
- 2024年配氣機(jī)構(gòu):進(jìn)排氣門項(xiàng)目評(píng)價(jià)分析報(bào)告
- 四下語文20課教學(xué)課件教學(xué)課件教學(xué)
- 茶山轉(zhuǎn)讓合同案例
- 餐飲店虧損狀態(tài)退股協(xié)議書
- 博士后流動(dòng)站 勞動(dòng)合同
- 皮帶機(jī)基礎(chǔ)知識(shí)培訓(xùn)講義
- 保潔服務(wù)應(yīng)急響應(yīng)能力預(yù)案
- 紅外耳溫計(jì)黑體校準(zhǔn)規(guī)范
- 危險(xiǎn)化學(xué)品倉儲(chǔ)智能化管理系統(tǒng)
- 消化內(nèi)鏡健康宣教課件
- 鐵道運(yùn)輸職業(yè)生涯規(guī)劃書
- 天津美術(shù)館分析報(bào)告
- 《PLC技術(shù)基礎(chǔ)、PLC技術(shù)及應(yīng)用》期末考試B卷
- 大腸桿菌耐藥機(jī)制探究
- 跨境電商方案的可行性報(bào)告
- 職業(yè)生涯規(guī)劃大賽公務(wù)員
評(píng)論
0/150
提交評(píng)論