西电软院数据库上机之触发器

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

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!