实验5触发器的定义_第1页
实验5触发器的定义_第2页
实验5触发器的定义_第3页
实验5触发器的定义_第4页
实验5触发器的定义_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验5触发器的定义一实验题目:触发器的定义。二实验目的:熟悉触发器的定义和使用。三实验内容及要求:(从下面10个题目中选一个)题目一:学生(学号,年龄,性别,系名)课程(课号,课名,学分,学时)选课(学号,课号,成绩)建立学生表的insert触发器,若向学生表中插入一条记录,则自动向选课表中插入一行, 令该生选一门选修人数最多的课。在建立学生表的delete触发器,若选课表中该生有选课记录,则拒绝删除,要求在删除 学生信息同时,将相关表中的信息全部删除。题目二:图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)建立图书的insert触发器,若向图书中

2、插入一条记录,则自动向借阅表中插入一行,令 该书被借阅次数最多的读者借阅。题目三:商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)建立商品的delete触发器,只有当此商品没有人买时才可删除,若有销售记录不能删 除。题目四:图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)出版社(编号,出版社名称,地址)建立作者的delete触发器,只有当此作者没有任何作品才可删除,若有出书的记录不 能删除。题目五:零件(编号,名称,颜色)车间(编号,名称,人数,主任)产品(编号,名称,车间编号

3、)使用(产品编号,使用零件编号,个数)建立零件的delete触发器,只有当此零件没有产品用时才可删除,若有使用记录不能 删除。题目六:药品(编号,名称,价格,厂商)处方(药品编号,数量,医生编号)医生(编号,姓名,科室,职称)建立药品的delete触发器,只有当此药品品没有人买时才可删除,若有处方记录不能 删除。题目七:学生(学号,年龄,性别,系名)教材(编号,书名,出版社编号,价格)订购(学号,书号,数量)出版社(编号,名称,地址)建立学生的insert触发器,若向学生表中插入一条记录,则自动向订购表中插入一行, 令该学生订购被订购数量最多的教材。题目八:员工(编号,姓名,性别,年龄,部门编

4、号,年薪)部门(编号,名称,人数,负责人)项目(编号,名称,负责部门编号)建立图书的insert触发器,若向图书中插入一条记录,则自动向借阅表中插入一行,令 该书被借阅次数最多的读者借阅。题目九:帐户(编号,姓名,余额,建立日期,储蓄所编号)储蓄所(编号,名称,地址,人数,所属城市)借贷(帐户,借贷类型,金额,日期)建立储蓄所的delete触发器,只有当此储蓄所没有帐户时才可删除,若有销售记录不 能删除。题目十:仓库(编号,保管员编号,面积)保管员(编号,姓名,年龄,电话、月薪)商品(编号,品名,仓库编号、数量,单价)建立仓库的delete触发器,只有当此仓库没有商品时才可删除。四实验指导1定

5、义触发器CREATE TRIGGER trigger_nameON tableWITH ENCRYPTIONFOR DELETE :, INSERT :, UPDATE WITH APPENDNOT FOR REPLICATIONASsql_statement .n|FOR INSERT , UPDATE WITH APPENDNOT FOR REPLICATIONASIF UPDATE (column)AND | OR UPDATE (column).n| IF (COLUMNS_UPDATED() bitwise_operatof updated_bitmask comparison_op

6、erator column_bitmask .nsql_statement .n例1CREATE TRIGGER INS-TRIGGERON SALESFOR INSERTASUPDATE TITLESSET ytd_sales=ytd_sales+( select sum(qty)from insertedgroup by inserted.title_id having titles.title_id=inserted.title_id)例2CREATE TRIGGER UPD_TRIGGERON SALESFOR UPDATEASUPDATE TITLESSET ytd_sales=yt

7、d_sales - ( select sum(qty)from deletedgroup by deleted.title_idhaving titles.title_id=deleted.title_id)例3CREATE TRIGGER UPD_TRIGGERON SALESFOR DELETEASIF (select count(*) from TITLE, deleted where titles.title_id=deleted.title_id)0UPDATE TITLESSET ytd_sales=ytd_sales - ( select sum(qty)from deleted

8、group by deleted.title_idhaving titles.title_id=deleted.title_id)例4USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name = reminder AND type = TR)DROP TRIGGER reminderGOCREATE TRIGGER employee_insupdON employeeFOR INSERT, UPDATEAS/* Get the range of level for this job type from the jobs table. */

9、DECLARE min_lvl tinyint,max_lvl tinyint,emp_lvl tinyint, job_id smallintSELECT min_lvl = min_lvl,max_lvl = max_lvl,emp_lvl = i.job_lvl,job_id = i.job_idFROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_idJOIN jobs j ON j.job_id = i.job_idIF (job_id = 1) and (emp_lvl 10)BEGINRAISERROR (Job id 1 expects the default level of 10., 16, 1)ROLLBACK TRANSACTIONENDELSEIF NOT (emp_lvl BETWEEN min_lvl AND max_lvl)BEGINRAISERROR (The level for job_id

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论