数据库高级技术实例存储过程触发器.docx

上传人:b****3 文档编号:4404427 上传时间:2023-05-07 格式:DOCX 页数:12 大小:16.67KB
下载 相关 举报
数据库高级技术实例存储过程触发器.docx_第1页
第1页 / 共12页
数据库高级技术实例存储过程触发器.docx_第2页
第2页 / 共12页
数据库高级技术实例存储过程触发器.docx_第3页
第3页 / 共12页
数据库高级技术实例存储过程触发器.docx_第4页
第4页 / 共12页
数据库高级技术实例存储过程触发器.docx_第5页
第5页 / 共12页
数据库高级技术实例存储过程触发器.docx_第6页
第6页 / 共12页
数据库高级技术实例存储过程触发器.docx_第7页
第7页 / 共12页
数据库高级技术实例存储过程触发器.docx_第8页
第8页 / 共12页
数据库高级技术实例存储过程触发器.docx_第9页
第9页 / 共12页
数据库高级技术实例存储过程触发器.docx_第10页
第10页 / 共12页
数据库高级技术实例存储过程触发器.docx_第11页
第11页 / 共12页
数据库高级技术实例存储过程触发器.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库高级技术实例存储过程触发器.docx

《数据库高级技术实例存储过程触发器.docx》由会员分享,可在线阅读,更多相关《数据库高级技术实例存储过程触发器.docx(12页珍藏版)》请在冰点文库上搜索。

数据库高级技术实例存储过程触发器.docx

数据库高级技术实例存储过程触发器

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

1、运用存储过程创建STUDENT、GRADE、COURSE表(要求实现完整性)。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

2、运用存储过程创建STUDENT、DEPARTMENT、DORM表(要求实现完整性)。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

3、运用存储过程对STUDENT、DEPARTMENT、DORM表插入一条符合完整性的记录。

(内容自己定义)

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

4、编写带参的存储过程:

实现删除‘01’课程‘数据库原理’的相关信息。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

5、编写带参的存储过程:

实现删除‘990101’学生‘原野’的相关信息。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

6、编写带参的存储过程:

实现宿舍号从‘2101’修改为‘3101’。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

7、编写带参的存储过程:

实现查询宿舍号“2505”的相关信息。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

8、运用触发器对GRADE实现插入记录“980101,08,99”(相关信息自己定义)。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

9、运用触发器对STUDENT表中的SEX实现数据范围检查,若出错,提示信息。

按照要求编写相应代码,执行结果后,并删除对象:

(以学号+题号做文件名提交:

990101_1)

10、运用触发器对STUDENT表的操作只能在工作时间:

9-15,每周一到五,实现数据安全性控制。

答案:

1、用存储过程创建STUDENT、GRADE、COURSE表(要求实现完整性)。

usestudent_data

go

ifexists(selectnamefromsysobjects

wherename='cun'andtype='P')

dropprocedurecun

go

createprocedurecun

as

begin

ifnotexists(selectnamefromsysobjects

wherename='student'andtype='U')

begin

createtablestudent

(snochar(6)NOTnullunique,

snamechar(8)notnull,

sexchar

(2),

sageint,

dnochar(4),

dormnochar(5),

constraintFK_DEPFOREIGNKEY(dno)referencesdepartment(dno),

constraintPK_studentprimarykey(sno)

insertintostudent

values('990101','原野','男',21,'1','2101');

end

ifnotexists(selectnamefromsysobjects

wherename='grade'andtype='U')

begin

createtablegrade

(snochar(6),

cnochar

(2),

scoreint

constraintpk_gradeprimarykey(sno,cno));

insertintograde

values('990101','01',85);

end

ifnotexists(selectnamefromsysobjects

wherename='course'andtype='U')

begin

createtablecourse

(cnochar

(2)NOTnullunique,

cnamechar(20)notnull,

cpnochar

(2),

creditint,

teacherchar(8)

constraintFK_CPforeignkey(cpno)referencesdorm(cpno),

constraintPK_COrprimarykey(cno)

insertintocourse

values('01','数据库原理','05',4,'王凯');

end

end

go

cun

select*fromstudent

2、运用存储过程创建STUDENT、DEPARTMENT、DORM表(要求实现完整性)。

3、运用存储过程对STUDENT、DEPARTMENT、DORM表插入一条符合完整性的记录。

(内容自己定义)

usestudent

go

ifexists(selectnamefromsysobjects

wherename='cun'andtype='P')

dropprocedurecun

go

createprocedurecun

@ssnochar(6),@ssnamechar(8),@ssexchar

(2),@ssageint,@ddnochar(4),@ddormchar(5)

@dddnochar(4),@ddnamechar(8),@hheadchar(20)

@dddornochar(5),@dddtelchar(7)

as

begin

ifnotexists(selectsnofromstudentwheresno=@ssno)

ifexists(selectdnofromdepartmentwheredno=@ddno)

Ifexists(selectdormnofromdormwheredormno=@ddorm)

insertintostudent(sno,sname,sex,sage,dno,dormno)

values(@ssno,@ssname,@ssex,@ssage,@ddno,@ddorm)

ifnotexists(selectdnofromdepartmentwheredno=@dddno)

ifnotexists(selectdnamefromdepartmentwheredname=@ddname)

insertintodepartment

values(@dddno,@ddname,@hhead)

ifnotexists(selectdormnofromdormwheredormno=@dddorno)

ifnotexists(selecttelefromdormwheretele=@dddtel)

insertintodorm

values(@dddorno,@dddtel)

end

go

usestudent

go

cun'990109','达到','男',19,'4','2404','5','地质','哈哈','6504','8306753'

select*fromstudent

select*fromdepartment

select*fromstudent

select*fromdorm

4、编写带参的存储过程:

实现删除‘01’课程‘数据库原理’的相关信息。

ifexists(selectnamefromsysobjects

wherename='del_cname'andtype='p')

dropproceduredel_cname

go

createproceduredel_cname

@cnamechar(20)

as

begin

deletegradewherecno=(selectcnofromcoursewherecname='数据库原理')

deletecoursewherecname=@cname

end

go

select*fromcourse

select*fromgrade

usestudent_data

go

del_cname'数据库原理'

go

dropproceduredel_cname

5、编写带参的存储过程:

实现删除‘990101’学生‘原野’的相关信息。

usestudent_data/*打开数据库*/

go

ifexists(selectnamefromsysobjects

wherename='del_S'andtype='p')

dropproceduredel_S

go

createproceduredel_S

@stuchar(6)

as

begin

deletegradewheresno=@stu

deletestudentwheresno=@stu

end

go

select*fromgrade

select*fromstudent

del_S'990101'

6、编写带参的存储过程:

实现宿舍号从‘2101’修改为‘3101’。

usestudent_data

ifexists(selectnamefromsysobjects

wherename='adjust_roo'andtype='P')

dropprocedureadjust_roo

go

createprocedureadjust_roo

@dormnoochar(5),@dormnoo1char(5)

as

begin

updatestudentsetdormno=@dormnoo1

wheredormno=@dormnoo

deletefromdorm

wheredormno=@dormnoo

end

go

adjust_roo'2101','3101'

go

select*fromstudent

7、编写带参的存储过程:

实现查询宿舍号“2505”的相关信息。

usestudent

go

ifexists(selectnamefromsysobjects

wherename='search_dorm'andtype='p')

dropproceduresearch_dorm

go

createproceduresearch_dorm

@dormnochar(5)

as

begin

selectdorm.*,sno,snamefromdorm,student

wherestudent.dormno=dorm.dormno

anddormno=@dormno

end

go

usestudent

exec

search_dorm'2505'

go

dropproceduresearch_dorm

8、运用触发器对GRADE实现插入记录“980101,08,99”(相关信息自己定义)。

usestudent_data

ifexists(selectnamefromsysobjects

wherename='SC'andtype='tr')

droptriggerSC

go

createtriggerSCongrade

forinsert

as

declare@Snochar(6)

declare@Cnochar

(2)

declare@msg1char(100)

declare@msg2char(100)

declare@msg3char(100)

declare@Scoreint

select@Sno=Snofrominserted

select@msg1='没有学生'

ifnotexists(select*fromstudent

wheresno=@Sno)

begin

print@msg1

rollbacktransaction

return

end

select@Cno=Cnofrominserted

select@msg2='没有课程'

ifnotexists(select*fromcourse

wherecno=@Cno)

begin

print@msg2

rollbacktransaction

return

end

select@Score=scorefrominserted

select@msg3='成绩不对'

if(@ScoreisnotNULLand(@Score<0or@Score>100))

begin

print@msg3

rollbacktransaction

end

go

insertintograde(sno,cno,score)

values('990101','01',NULL)

deletegradewheresno='990101'

9、运用触发器对STUDENT表中的SEX实现数据范围检查,若出错,提示信息。

usestudent_data

ifexists(selectnamefromsysobjects

wherename='tr_ssex'andtype='TR')

droptriggertr_ssex

go

createtriggertr_ssexonstudent

beforeupdate,insert

as

declare@msgvarchar(100)

declare@vssexchar

(2)

select@msg='数据有误,请检查后,重新输入!

'

select@vssex=sexfrominserted

if(@vssex<>'男'and@vssex<>'女')

begin

print@msg

rollbacktransaction

end

return

go

select*fromstudent

updatestudentsetsex='王'wheresno='990101'

updatestudentsetsex='女'wheresno='990101'

insertintostudent(sno,sname,sex)

values('200001','A','王')

insertintostudent(sno,sname,sex)

values('200002','B','女')

droptriggertr_ssex

sp_helptexttr_ssex

10、运用触发器对STUDENT表的操作只能在工作时间:

9-15,每周一到五,实现数据安全性控制。

usestudent

ifexists(selectnamefromsysobjects

wherename='tr_up_student'andtype='TR')

droptriggertr_up_student

go

createtriggertr_up_studentonstudent

forupdate,insert,delete

as

declare@msgvarchar(100)

select@msg='无法操作'

if(datename(weekday,getdate())like'sat'ordatename(weekday,getdate())like'sun'or

datename(hour,getdate())notbetween9and15)

BEGIN

PRINT@msg

rollback

end

go

select*fromstudent

updatestudent

setsage='30'

wheresno='990101'

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2