触发器及其应用 习题参考答案.docxVIP

触发器及其应用 习题参考答案.docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

触发器及其应用习题参考答案

一、基础概念题

1.简述触发器的定义及核心作用。

参考答案:触发器是一种特殊的存储过程,它由数据库管理系统(DBMS)在特定事件(如INSERT、UPDATE、DELETE)发生时自动触发执行,无需用户直接调用。核心作用包括:①维护数据完整性与一致性(如级联更新关联表数据);②实现业务规则自动化(如数据校验、日志记录);③辅助完成复杂业务逻辑(如自动计算衍生数据)。

2.触发器的触发时机主要有哪几种?分别说明其适用场景。

参考答案:触发时机主要分为BEFORE(事件发生前)和AFTER(事件发生后)两种。①BEFORE触发器:适用于数据校验、数据预处理场景,例如插入数据前校验字段合法性(如金额非负)、自动填充默认值等,可阻止非法数据进入数据库;②AFTER触发器:适用于数据后续处理场景,例如数据插入后记录操作日志、更新关联表统计数据等,确保触发操作基于合法数据完成。

3.简述行级触发器(FOREACHROW)与语句级触发器(FOREACHSTATEMENT)的区别。

参考答案:①执行频率不同:行级触发器针对触发事件影响的每一条数据都会执行一次;语句级触发器无论事件影响多少条数据,仅执行一次。②适用场景不同:行级触发器适用于需要逐行处理数据的场景(如逐行校验、逐行更新关联数据);语句级触发器适用于整体统计、日志记录等场景(如记录某次批量更新操作的时间和操作人员)。③数据访问权限不同:行级触发器可通过:NEW(新数据)、:OLD(旧数据)访问当前行的具体数据,语句级触发器无法直接访问单条数据。

4.触发器的触发事件主要包含哪些?请分别举例说明。

参考答案:触发事件主要包含DML事件(数据操纵语言事件),具体为INSERT、UPDATE、DELETE三种:①INSERT事件:当向表中插入数据时触发,例如向学生表插入新学生记录时触发;②UPDATE事件:当更新表中数据时触发,例如更新员工表中员工薪资时触发;③DELETE事件:当删除表中数据时触发,例如删除订单表中过期订单时触发。

二、选择题

1.下列关于触发器的说法,错误的是()

A.触发器可自动触发执行,无需手动调用

B.BEFORE触发器可修改:NEW中的数据

C.语句级触发器可通过:OLD访问被修改的旧数据

D.触发器可用于维护数据的参照完整性

参考答案:C。解析::OLD和:NEW仅适用于行级触发器,语句级触发器无法访问单条数据的旧值和新值,因此C选项错误。

2.若需要在插入数据前校验字段值的合法性,应创建的触发器类型是()

A.AFTERINSERT行级触发器

B.BEFOREINSERT行级触发器

C.AFTERINSERT语句级触发器

D.BEFOREINSERT语句级触发器

参考答案:B。解析:数据校验需要逐行检查插入的每条数据,因此需使用行级触发器;且校验需在数据插入前完成,才能阻止非法数据插入,故选择BEFOREINSERT行级触发器。

3.下列场景中,最适合使用AFTER触发器的是()

A.插入订单前校验客户ID是否存在

B.更新商品库存前校验库存是否充足

C.删除用户后删除该用户的所有关联订单

D.插入员工记录时自动填充入职日期为当前日期

参考答案:C。解析:A、B、D均需在事件发生前完成处理(校验或数据填充),适合使用BEFORE触发器;C选项需在用户成功删除后,再处理关联订单,确保删除操作合法完成,适合使用AFTER触发器。

三、实操应用题(基于Oracle数据库)

现有数据库表结构如下,完成以下触发器的创建及相关操作:

1.客户表(customer):ssn(客户身份证号,主键)、name(客户姓名)、num_accounts(客户账户数量,默认0)

2.账户表(account):acc_no(账户号,主键)、ssn(客户身份证号,外键关联customer表ssn)、balance(账户余额)

3.贷款表(loan):ssn(客户身份证号)、code(贷款编号)、loan_date(贷款日期)、amount(贷款金额)

1.创建触发器trig_insert_account,要求当向account表插入新账户时,自动更新customer表中对应客户的num_accounts(账户数量)加1。

参考答案:

CREATEORREPLACETRIGGERtrig_insert_account

AFTERINSERT--插入账户后更新统计数据

ONaccount

FOREACHROW--逐行处理每条新插入的账户记录

BEGIN

UPDATEcustomer

SE

文档评论(0)

WYN177 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档