版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、長(zhǎng) 沙 理 工 大 學(xué) 計(jì)算機(jī)與通信工程學(xué)院 實(shí) 驗(yàn) 報(bào) 告 課程名稱 數(shù)據(jù)庫(kù)原理與技術(shù) 實(shí)驗(yàn)項(xiàng)目名稱 數(shù)據(jù)完整性 班級(jí) 學(xué)號(hào) 姓名 實(shí)驗(yàn)日期 年 月 日 指導(dǎo)教師簽字 一實(shí)驗(yàn)?zāi)康?(1) 掌握SQL Server管理平臺(tái)和Transact-SQL語(yǔ)句(Create table、alter table)定義和刪除約束的方法,并了解約束的類型。 (2) 掌握通過(guò)SQL Server管理平臺(tái)和Transact-SQL語(yǔ)句Create trigger創(chuàng)建觸發(fā)器的方法和步驟; (3) 掌握引發(fā)觸發(fā)器的方法; (4) 掌握使用SQL Server管理平臺(tái)或Transact-SQL語(yǔ)句修改和刪除觸發(fā)器;
2、二實(shí)驗(yàn)平臺(tái) 操作系統(tǒng):Windows xp DBMS:SQL Server 2005 三實(shí)驗(yàn)內(nèi)容和步驟 1在studentsdb數(shù)據(jù)庫(kù)中用CREATE TABLE語(yǔ)句創(chuàng)建表stu_con,并同時(shí)創(chuàng)建約束。 (1)創(chuàng)建表的同時(shí)創(chuàng)建約束。表結(jié)構(gòu)如圖1所示。 圖1 要?jiǎng)?chuàng)建的表的結(jié)構(gòu) 約束要求如下: 將學(xué)號(hào)設(shè)置為主鍵(PRIMARY KEY),主鍵名為pk_sid。 為姓名添加唯一約束(UNIQUE),約束名為uk_name。 為性別添加默認(rèn)約束(DEFAULT),默認(rèn)名稱為df_sex,其值為“男”。 為出生日期添加屬性值約束(CHECK),約束名為ck_bday,其檢查條件為:出生日期1988-1
3、-1。 (2)使用ALTER TABLE語(yǔ)句的DROP CONSTRAINT參數(shù)項(xiàng)在查詢?cè)O(shè)計(jì)器中刪除為stu_con表所建的約束。 2為studentsdb數(shù)據(jù)庫(kù)的grade表添加外鍵約束(FOREIGN KEY),要求將“學(xué)號(hào)”設(shè)置為外鍵,參照表為student_info,外鍵名稱為fk_sid。 3為grade表建立一個(gè)名為insert_g_tr 的INSERT觸發(fā)器,當(dāng)用戶向grade表中插入記錄時(shí),如果插入的是在curriculum表中沒(méi)有的課程編號(hào),則提示用戶不能插入記錄,否則提示記錄插入成功。在進(jìn)行插入測(cè)試時(shí),分別輸入以下數(shù)據(jù): 學(xué)號(hào) 課程編號(hào) 分?jǐn)?shù) 0004 0003 76 00
4、05 0007 69 觀察插入數(shù)據(jù)時(shí)的運(yùn)行情況,說(shuō)明為什么? 變量定義:DECLARE fkc_id varchar(8) 提示記錄插入成功:PRINT 記錄插入成功 提示不能插入記錄:RAISERROR(無(wú)此課程,不能插入記錄,16,1) 4為curriculum表創(chuàng)建一個(gè)名為del_c_tr的DELETE觸發(fā)器,該觸發(fā)器的作用是禁止刪除curriculum表中的記錄。 CREATE TRIGGER del_c_tr ON curriculum Instead of delete AS RAISERROR(禁止刪除curriculum表中的記錄) ROLLBACK TRANSACTION 5
5、為student_info表創(chuàng)建一個(gè)名為update_s_tr的UPDATE觸發(fā)器,該觸發(fā)器的作用是禁止更新student_info表中的“姓名”字段的內(nèi)容。 CREATE TIGGER update_s_tr ON student_info FOR UPDATE AS DECLARE name_old varchar(8) DECLARE name_new varchar(8) SET name_old=(SELECT 姓名 FROM Deleted) SET name_new=(SELECT 姓名 FROM Inserted) IF (name_old!=name_new) BEGIN R
6、AISERROR(不能修改姓名,16,1) END 6使用Transact-SQL語(yǔ)句DROP TRIGGER刪除update_s_tr觸發(fā)器。 DROP TRIGGER student_info.uodate_s_tr 7為student_info表建立刪除觸發(fā)器del_s_tr,要求當(dāng)student_info表的記錄被刪除后,grade表中相應(yīng)的記錄也能自動(dòng)刪除。 CREATE TIGGER del_s_tr ON student_info FOR DELETE AS DECLARE stu_no varchar(8) SET stu_no=(SELECT 學(xué)號(hào) FROM Deleted)
7、 DELETE * FROM grade WHERE 學(xué)號(hào)=stu_no 四命令(代碼)清單 use studentsdb; create table stu_con( 學(xué)號(hào) char(4) constraint pk_sid primary key, 姓名 char(8) constraint uk_name unique, 性別 char(2) constraint de_sex default 男 , 出生日期 char(8) constraint ck_bday check (出生日期 1988-1-1), 家庭住址 varchar(50) ) alter table stu_con
8、drop constraint pk_sid,uk_name,df,_sex,ck_bday alter table student_info alter column 學(xué)號(hào) char(4) not null alter table student_info add primary key(學(xué)號(hào)); alter table grade add constraint fk_sid foreign key(學(xué)號(hào)) references student_info(學(xué)號(hào)) CREATE TRIGGER insert_g_tr ON dbo.grade FOR INSERT AS DECLARE Err
9、No int, ErrMsg varchar(255) if exists (select 課程編號(hào) from inserted where 課程編號(hào)= ) begin select errno = 33333, errmsg = 課程編號(hào)不可為空 ! goto error end RETURN error: raiserror errno errmsg CREATE TRIGGER del_c_tr ON curriculum instead of delete AS RAISERROR(禁止刪除curriculum表中的記錄,16,1) ROLLBACK TRANSACTION CREATE TRIGGER update_s_tr ON student_info FOR UPDATE AS DECLARE name_old varchar(8) DECLARE name_new varchar(8) SET name_old=(SELECT 姓名 FROM Deleted) SET name_new=(SELECT 姓名 FROM Inserted) IF (name_old!=name_new) BEGIN RAISERROR(不能修改姓名,16,1) END drop TRIGGER update_s_tr ON student_info C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新材料研發(fā)財(cái)產(chǎn)抵押合同3篇
- 2025年度碧桂園綠色建筑設(shè)計(jì)咨詢與施工總承包服務(wù)協(xié)議3篇
- 2025年度智能交通信號(hào)系統(tǒng)安裝合同示范文本3篇
- 2025年通脈顆粒項(xiàng)目可行性研究報(bào)告
- 2025年私立學(xué)校學(xué)生宿舍床上用品清洗與更換服務(wù)合同3篇
- 2025年度個(gè)人買(mǎi)賣(mài)房屋質(zhì)量保證合同4篇
- 2025年浙江物芯數(shù)科技術(shù)有限公司招聘筆試參考題庫(kù)含答案解析
- 二零二五版進(jìn)出口貿(mào)易物流倉(cāng)儲(chǔ)合同2篇
- 2025年江蘇南通天生置業(yè)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年河南衛(wèi)輝投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- 2024年廣東省深圳市中考英語(yǔ)試題含解析
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 建筑工程施工圖設(shè)計(jì)文件審查辦法
- 干部職級(jí)晉升積分制管理辦法
- 培訓(xùn)機(jī)構(gòu)應(yīng)急預(yù)案6篇
- 北師大版數(shù)學(xué)五年級(jí)上冊(cè)口算專項(xiàng)練習(xí)
- 應(yīng)急物資智能調(diào)配系統(tǒng)解決方案
- 2025年公務(wù)員考試時(shí)政專項(xiàng)測(cè)驗(yàn)100題及答案
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
評(píng)論
0/150
提交評(píng)論