欢迎来到天天文库
浏览记录
ID:29165544
大小:133.57 KB
页数:7页
时间:2018-12-17
《西电软院数据库上机之触发器.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第二次上机实验报告一、实验目的1.建立约束,包括主键约束、外键约束、check约束、default约束、unique约束、Notnull约束,深入理解数据库的完整性。2.建立、启用、撤销触发器,明确行级触发器和语句集触发器的不同。理解触发器对事物的约束规则。二、实验内容及结果1.建立约束,并返回查询结果验证约束(1)Notnull约束:建立表A并约束t1属性不为空;(2)主键约束:创建表foo_notatication并约束foo_nfy_key为主键;(3)外键约束:创建表foo1并把foo_custno约束为emplyees的外键Oracle图形界面显示结果如下:(1)创建c
2、heck约束:选择jobs表约束min_salary_limit为大于等于1000可以从截图看出第一次所加约束min_salary>=10000违反了约束条件,原因是,整张表中既在元素并不满足该约束。Oracle图形界面中的显示结果:(2)Default约束:创建表foo并设置col2的约束为默认1从查询结果可以看出插入一元组(17)时col2默认值为1,但当插入二元组(18,null)时,原来的默认值被null覆盖。(1)删除主键约束:altertable_name(表名)dropprimarykey(约束名)从结果可以看出在试图删除employees主键约束时,出现错误提示:
3、主键被外键引用,不能删除。这充分反映了约束对于数据库完整性的保护机制。其中涉及约束创建顺序以及关联关系。1.创建、删除触发器(1)创建行级触发器:把握触发时间,触发顺序创建行级触发器的语法:CREATEORREPLACETRIGGERtrigger_nameAFTERUPDATEORDELETEONtable_nameFOREACHROWBEGINUPDATEattribute_nameSETconditionWHEREcondition;END实例一:从oracle的图形界面返回结果可以看到触发器创建成功,该触发器的作用是在表jobs中插入元素后输出插入元素内容。在sql命令框
4、中查看结果:实例二:触发器作用:在对jobs表中的job_id进行更新或删除后,对用不同操作给出不同输出。上图表示在对jobs表进行插入操作后,显示操作为“插入”,并输出插入项。(2)语句级触发器:实例一:从上图可以看出该触发器作用是再插入或更新employee表的salary属性后,计算employees表的薪水和,如果其值大于500000则弹出报告。命令行用实例触发得到结果如下:首先,我企图插入一组数据,其中外键值为115很明显,表中已经有该主键对应条目,继续插入则会违反主键唯一性,所以改正后进行操作:可以看出触发器得以触发,在这里还有一个错误,具体原因不明,有待解决。(3)
5、撤销触发器:设置jobs_trigger触发器不可用此时再继续检验触发器效果,发现:并没有触发,只是普通输出。一、实验总结及反思1.关于约束:约束,将大量业务规则的声明作为数据定义的组成部分。其核心概念是,约束都是声明性约束,不是过程性对简单的规则,这种声明形式更便于理解和维护声明性约束是自描述的,不需要额外的注释进行说明性能优点:约束检查往往比在应用程序中执行相同的验证更有效。Oracle可以评估声明性约束,优化和调整程序,可以尽可能高效地执行这些检查。2.关于触发器触发器类似于函数和过程,它们都是具有声明部分、执行部分和异常处理部分的程序实体单元。触发器必须在数据库中以独立对
6、象的身份存储。触发器是在事件发生时隐式地运行的,不能接收参数,不能被调用。运行触发器的方式叫做激发(firing)触发器,触发事件可以是对数据库表的DML(INSERT、UPDATE或DELETE)操作或某种视图的操作触发器的用途通过记录修改内容和修改者来审计表中的信息。在表内容发生变更时,自动通知其他程序采取相应的处理。在订阅发布环境下,发布有关各种事件的信息。维护在表创建阶段通过声明限制无法实现的复杂完整性限制。触发器主要用于促进引用的完整性只能在无法使用下列表级别限制时使用它们NOTNULL、UNIQUEKEY、PRIMARYKEY、FOREIGNKEY、CHECK3.关于
7、数据库完整性触发器本身也是一种约束,这些约束的本质目的是为了保护数据库的完整性,数据库完整性为何如此重要?一个数据库要是完整的必须通过约束机制来规定用户行为对于数据库的操作。这是数据库设计的一个重要原则。为了保护应用程序的关键数据的完整性,在建立相关业务规则时应用程序开发人员和DBA的需求是一致的。但是,DBA通常都希望将业务规则置于数据库之中,以便他们可以看到文档形式的规则;应用程序开发人员则认为,直接将规则以应用程序代码的形式体现更为方便。挑战:确保存在于两种位置的规则相一致
此文档下载收益归作者所有