欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验11 触发器.docx

    • 资源ID:970470       资源大小:218.26KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验11 触发器.docx

    1、实验11 触发器实验十一触发器姓名:学号:专业:班级:同组人:无实验日期:2012-5-1【实验目的与要求】1 熟练掌握变量的定义和赋值。 2 熟练掌握各种运算符。3 熟练掌握流程控制语句,尤其是条件语句和循环语句。4 熟悉游标的工作机制及游标的使用【实验内容与步骤】11.1. 创建DML触发器1. 使用触发器模板创建触发器在【对象资源管理器】窗口中,展开“数据库”节点,再展开所选择的具体数据库节点,再展开“表”节点,右击要创建触发器的“表”,选择“新建触发器”命令,如图所示:在右侧查询编辑器中出现触发器设计模板,可以在此基础上编辑触发器,单击“执行”按钮,即可创建该触发器。2. 使用T-SQ

    2、L语句创建表级触发器在查询分析器里使用T-SQL可直接创建存储过程语法:CREATE TRIGGER 触发器ON 表名FORupdate,insert,delete ASSQL语句实验11-1:编写一触发器,在向产品表CP中添加记录时,得到该类产品的总价格(总价格价格*库存量),并输出。说明:可使用Print 变量名 来输出变量值。USE CPXSIF EXISTS (SELECT name FROM sysobjects -如果已经存在触发器则删除WHERE name =T_return_Total AND type=TR)DROP TRIGGER T_return_TotalGOCREAT

    3、E TRIGGER T_return_Total -创建触发器ON CP -基于表borrowAfter INSERT -监视插入操作,针对其触发ASBegin-查询插入记录INSERTED中读者的类型DECLARE P_ID char(6),P_Name char(30),P_Price float, P_Storage int, P_total_price intSET P_ID =(SELECT 产品编号 FROM inserted) - inserted为临时表SET P_Name =(SELECT 产品名称 FROM inserted)SET P_Price =(SELECT 价格

    4、FROM inserted)SET P_Storage=(SELECT 库存量 FROM inserted)SET P_total_price=P_Price*P_StoragePRINT 产品为: + P_Name+总价格为: + convert(varchar(20),P_total_price)End应用测试:USE CPXSINSERT INTO CP(产品编号,产品名称,价格,库存量) VALUES(100016,东风小汽车,85728,9);给出运行结果:实验11-2:对CPXS库中CP表的 DELETE操作定义触发器。当某产库存量为0时将该记录删除。USE CPXSGOIF EX

    5、ISTS(SELECT name FROM sysobjects -如果已经存在触发器则删除 WHERE name=CP_Del AND type=TR)DROP TRIGGER CP_DelGOCREATE TRIGGER CP_Del -创建触发器ON CPFOR DELETEASBeginDECLARE Storage intSELECT Storage =库存量FROM deletedIF Storage0 BEGIN PRINT 该产品记录不能删除!还有+convert(char(2),Storage)+件没销完。 ROLLBACK -回滚操作,撒销删除操作 ENDELSE PRIN

    6、T 该产品记录已被删除!EndGO测试:USE CPXSGODELETE CP WHERE 产品名称=太阳能热水器请给出执行结果:练习:(1)完成后,再执行Select * from cp;语句,查看产品名称=太阳能热水器的记录是否真的删除。请给出执行结果:(2)执行如下语句,在CP表中插入一行库存量字段值为0的记录。INSERT INTO CP(产品编号,产品名称,价格,库存量) VALUES(100017,小汽车,85788,0);再执行删除语句:DELETE CP WHERE 产品名称=小汽车;请给出执行结果:而后再执行“Select * from cp;”语句,查看该记录是否删除,比较

    7、与(1)的差别。11.2. 创建DDL触发器DDL 触发器会为响应多种数据定义语言 (DDL) 语句而激发。这些语句主要是以 CREATE、ALTER 和 DROP 开头的语句。DDL 触发器可用于管理任务,例如审核和控制数据库操作。语法形式:CREATE TRIGGER trigger_name ON ALL SERVER|DATABASEWITH ,.n FOR|AFTER event_type|event_group,.nAS sql_statement; .n|EXTERNAL NAME ; 其中::=ENCRYPTION EXECUTE AS Clause := assembly_n

    8、ame.class_name.method_name 实验11-3:使用DDL触发器来防止数据库中的任一表被修改或删除。CREATE TRIGGER safetyON DATABASE FOR DROP_TABLE, ALTER_TABLEASPRINT You must disable Trigger safety to drop or alter tables!ROLLBACK 练习:试着对表进行删除或修改,看是否能修改成功。11.3. 触发器的其他操作1.修改触发器语法要点:ALTER TRIGGER 触发器名2.删除触发器语法要点:DROP TRIGGER 触发器名实验11-4:删除触

    9、发器:请用T-SQL命令删除上一实验中创建的触发器safety。请给出相应语句和执行结果:3.查看触发器可使用系统存储过程查看触发器相关信息,根据实验实际,将以下两处中的trigger_name和table_name换成具体的触发器名字和表名,放于查询分析器中执行,给出执行结果截图:(1)查看触发器的具体内容:sp_helptext trigger_name实验11-5:查看触发器的定义:请给出执行结果:(2)查看表中的触发器:sp_helptrigger table_name实验11-6:查看定义在表中的触发器:请给出执行结果:11.4. 触发器练习1.练习:编写一个触发器t_CP_bak,

    10、用以备份CP表的历史数据,若用户对表CP进行删除操作,则将被删除的数据转移到表CP_del,若用户对表CP进行更新操作,则将更新前的原始数据行转移到表CP_update中。(注:表CP_del和CP_update请先创建它,结构与CP相同,可用Select Into语句基于CP表创建。)请给程序源码:create trigger t_CP_bakon cpafter delete,updateasif exists(select 1 from inserted) and exists(select 1 from deleted)begininsert into cp_update select

    11、 * from deletedendif not exists(select 1 from inserted)begininsert into cp_del select * from deletedend(1)试着在CP表中删除几行数据,而后查询CP_del中数据。给出查询结果:(2)试着在CP表中更新几行数据,而后查询CP_update中数据。给出查询结果:2练习:创建一触发器,当向CPXSB表插入一记录时,检查该记录的产品编号在CP表中是否存在,检查该记录的客户编号在XSS表中是否存在,若有一项为否,则不允许插入。请给出源码和测试结果:(1)源代码create trigger t_cpx

    12、sb_inserton cpxsbfor insertas begindeclare cpbh char(6), xsbh char(6)SET cpbh =(SELECT 产品编号 FROM inserted) SET xsbh =(SELECT 客户编号 FROM inserted)if(cpbh not in (SELECT 产品编号 FROM cp) begin print插入数据中产品编号与cp表中产品编号不一致 rollback transaction endelse print插入一行数据成功if(xsbh not in(SELECT 客户编号 FROM xss)begin pr

    13、int插入数据中客户编号与xss表中产品编号不一致 rollback transaction endelse print插入一行数据成功end(2)测试:分别插入满足条件和不满足条件的记录,看数据是否能正常插入。3. 练习: 在CPXSB上创建一后触发器,若对产品编号列和客户编号列修改,则给出提示信息“产品编号列和客户编号列不能修改”,并取消修改操作(使用回滚语句,见前面实验)。请给出源码和测试结果:(1)源代码create trigger trig_updateon cpxsbfor insertas begin if update(产品编号) begin print产品编号列和客户编号列不能修改 rollback transaction endif update(客户编号) begin print产品编号列和客户编号列不能修改 rollback transaction endend(2)测试:试着对CPXSB中产品编号列和客户编号数据进行修改,看是否能修成功。


    注意事项

    本文(实验11 触发器.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开