数据库实验6触发器实验报告.docx

上传人:b****6 文档编号:7114005 上传时间:2023-01-18 格式:DOCX 页数:11 大小:241.60KB
下载 相关 举报
数据库实验6触发器实验报告.docx_第1页
第1页 / 共11页
数据库实验6触发器实验报告.docx_第2页
第2页 / 共11页
数据库实验6触发器实验报告.docx_第3页
第3页 / 共11页
数据库实验6触发器实验报告.docx_第4页
第4页 / 共11页
数据库实验6触发器实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库实验6触发器实验报告.docx

《数据库实验6触发器实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验6触发器实验报告.docx(11页珍藏版)》请在冰豆网上搜索。

数据库实验6触发器实验报告.docx

数据库实验数据库实验6触发器实验报告触发器实验报告淮海工学院计算机工程学院实验报告书课程名:

数据库原理及应用题目:

存储过程和触发器班级:

软件132学号:

2013122907姓名:

孙莹莹一目的与要求1.掌握存储过程的创建方法;2.掌握存储过程的执行、修改和删除等操作;3.掌握触发器的创建方法;4.掌握触发器的使用、修改和删除等相关内容二实验内容基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能:

1.创建一个为worker表添加职工记录的存储过程Addworker;2.创建一个存储过程Delworker删除worker表中指定职工号的记录。

3.显示存储过程Delworker;4.删除存储过程Addworker和Delworker.三实验步骤1.

(1)建立存储过程USEfactoryGOCREATEPROCEDUREAddworkernoint=NULL,namechar(10)=NULL,sexchar

(2)=NULL,birthdaydatetime=NULL,nachar

(2)=NULL,wtimedatetime=NULL,depnoint=NULLASIFnoISNULLORnameISNULLORsexISNULLORbirthdayISNULLORdepnoISNULLBEGINPRINT请重新输入该职工信息!

PRINT你必须提供职工号、姓名、性别、出生日期、部门号RETURNENDBEGINTRANSACTIONINSERTINTOworkerVALUES(no,name,sex,birthday,na,wtime,depno)IFerror0BEGINROLLBACKTRANRETURNENDCOMMITTRANSACTIONPRINT职工+name+的信息成功添加到表worker中

(2)验证存储过程USEfactoryGOAddworker20,陈立,女,55/03/08,否,75/10/10,4GOSELECT职工号,姓名,性别,党员否FROMworkerGO2.

(1)建立存储程序USEfactoryGOCREATEPROCEDUREDelworkernoint=NULLASIFnoISNULLBEGINPRINT必须输入职工号!

RETURNENDBEGINTRANSACTIONDELETEFROMworkerWHERE职工号=noIFerror0BEGINROLLBACKTRANRETURNENDCOMMITTRANSACTIONPRINT成功删除职工号为+CAST(noASCHAR

(2)+的职工记录执行下列语句,可验证存储过程的正确性:

USEfactoryGODelworker20GOSELECT职工号,姓名,性别,党员否FROMworkerGO3.USEfactoryGOEXECsp_helptextDelworkerGO4.USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREname=AddworkerANDtype=P)DROPPROCEDUREAddworkerGOIFEXISTS(SELECTnameFROMsysobjectsWHEREname=DelworkerANDtype=P)DROPPROCEDUREDelworkerGO5.建立触发器depart_update的程序如下:

USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREtype=TRANDname=depart_update)DROPTRIGGERdepart_updateGOCREATETRIGGERdepart_updateONdepartAFTERUPDATEASDECLAREolddepnoint,newdepnointSELECTolddepno=部门号FROMdeletedSELECTnewdepno=部门号FROMinsertedUPDATEworkerSET部门号=newdepnoWHERE部门号=olddepnoGO执行下列语句,可验证存储过程的正确性:

USEfactoryGOPRINT将部门号改为UPDATEdepartSET部门号=105WHERE部门号=101GOSELECT职工号,姓名,部门号FROMworkerGOPRINT将部门号改为UPDATEdepartSET部门号=101WHERE部门号=105GOSELECT职工号,姓名,部门号FROMworkerGO6.建立触发器worker_delete的程序如下:

USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREtype=TRANDname=worker_delete)DROPTRIGGERworker_deleteGOCREATETRIGGERworker_deleteONworkerFORDELETEASDECLAREnointSELECTno=职工号FROMdeletedDELETEFROMsalaryWHERE职工号=noGO执行下列语句,可验证存储过程的正确性:

USEfactoryGOPRINT删除前的工资记录SELECT*FROMsalaryGODELETEFROMworkerWHERE职工号=15GOPRINT删除职工号为的职工记录后的工资记录SELECT*FROMsalaryGO7.删除触发器depart_update的程序如下:

USEfactoryGODROPTRIGGERdepart_updateGO8.删除触发器worker_delete的程序如下:

USEfactoryGODROPTRIGGERworker_deleteGO四测试数据与实验结果第1题图第2题图第3题图第5题图第6题图五结果分析与实验体会CREATEPROCEDURE语句允许创建、编译并在MS-SQLServer上保存存储过程。

在默认情况下,只有数据库拥有者(DBO)具有对数据库的CREATEPROCEDURE访问权。

但是,DBO可执行以下形式的GRANT语句向由语句中的所标识的用户ID授予CREATEPROCEDURE访问权:

GRANTCREATEPROCEDURECREATEPROCEDURE语句的句法如下:

CREATEPROCEDURE;VARYING=OUTPUT,nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATIONAS其中:

是存储过程的名称,名称至多可有128个字符。

允许创建多个有相同名称的存储过程。

通过在执行命令中包括版本号从而执行指定版本的存储过程,如下面的语句所示:

EXECusp_proc;2。

如果调用存储过程时没有指定版本号,DBMS将执行具有相同名称的存储过程组中最高版本号的存储过程。

通过在DROP语句中包括版本号,如DROPPROCEDUREusp_proc;2所示,可以删除特定版本号的存储过程,或者忽略版本号,如DROPPROCEDUREusp_proc从而一次删除存储过程的所有版本。

是可用作存储过程中的变量的参数名。

每个参数的值必须在存储过程调用中提供或者作为CREATEPROCEDURE语句的一部分设置为缺省值。

虽然参数可用作存储过程中的变量名,但参数不能用作列名、表名或是其他数据库对象的名称。

是参数的数据类型。

参数可以是任何合法的SQL数据类型(包括TEXT、NTEXT和IMAGE)或用户定义的数据类型。

如果参数是CURSOR数据类型,该参数还必须被指定为VARYING和OUTPUT。

VARYING仅对数据类型为CURSOR的参数才是合法的。

指明该参数将包括内容会变化的结果集,其内容由存储过程中的语句动态地构成。

是参数的默认值。

如果指定,则过程可在不指定参数的情况下执行。

OUTPUT指明参数在存储过程中可以变化,而且修改后的值可返回给主调过程。

n指明CREATEPROCEDURE语句可有多达2100个参数。

RECOMPILE每当存储过程被调用时告诉MS-SQLServer都要进行编译(也就是生成新的执行计划)。

如果没有此选项项,DBMS在执行CREATEPROCEDURE语句时编码存储过程,每次调用时都使用同一执行计划。

ENCRYPTION告诉MS-SQLServer加密SYSCOMMENTS表中存储过程条目的文本,以防止用户查看编译后的存储过程中的语句。

指定此选项还可防止存储过程被除数作为MS-SQLServer的复制过程而分开。

由于创建的触发器在条件成立时会自动被调用,可能影响后面示例的执行,所以当一个触发器不再需要时,需将其禁用,禁用trigop触发器的操作是:

选中factory表节点,展开下方的触发器节点,右击trigop,在出现的快捷菜单中选择禁用命令。

如要重新启动已禁用的触发器,在这里选择启用命令即可启动该触发器。

SQLServer2005中创建的DML触发器有两种:

旧类型的触发器和INSTEADOF触发器。

旧类型触发器现在叫AFTER触发器,这种类型的触发器在INSERT、UPDATE或DELETE语句执行后才会触发执行,并且只能定义在表上。

当用户创建旧类型触发器时,应使用新关键字(AFTER),出于兼容性考虑,旧的关键字(FOR)任然能够使用,但是不推荐再使用它。

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1