lab1711-触发器-2_第1页
lab1711-触发器-2_第2页
lab1711-触发器-2_第3页
全文预览已结束

下载本文档

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

文档简介

大型数据库实验报告学院:信息技术学院班级:软件1班专业:计算机&软件工程&数媒姓名:刘国栋日期:2013-06-24 20:04:18学号:10010300791. 实验目的l 掌握触发器的原理l 掌握触发器的编写方法l 测试触发器是否生效2. 实验内容(注意,实验代码和过程中产生的数据要上交,请同学们用spool命令记录下代码和过程)1. 创建语句级触发器,名称为triDML+姓名简拼+学号后两位;功能为:对scott用户的emp表进行dml操作的用户进行安全检查,如果不是scott用户,则不能够做增、删、改的操作。(提示用if user not in (SCOTT) then来判断是否为scott用户)。create trigger triDMLlgd79before insert or update or delete on scott.empbeginif user not in (scott) then raise_application_error(-20001,你现在不是在scott用户下,不能对emp表做增、删、改);end if;end;2. 创建行级触发器,名称为triROW+姓名简拼+学号后两位;功能为:当对scott用户的emp表插入数据时,如果deptno30时,将comm值设置为0。create trigger triROWlgd79before insert on empfor each rowbeginif new.deptno30 then :m:=0;end;3. 创建替代触发器,名称为triInsteadOf+姓名简拼+学号后两位。功能为:可以往视图里插入数据。提示:创建一个视图view_emp_dept,数据来源于emp表的字段empno,ename,job,emp.deptno,条件是emp.deptno = dept.deptno。创建替代触发器,使得可以对视图view_emp_dept进行插入数据的操作。 create or replace view view_emp_dept as select empno,ename,job,emp.deptno from emp,dept where emp.deptno = dept.deptno;create or replace trigger triInsteadOflgd79 instead of insert on view_emp_dept for each rowdeclarebegininsert into emp (empno,ename,job,deptno) values (:New.empno,:New.ename,:New.job,:New.deptno);end;4.创建DDL触发器,名称为triDDL+姓名简拼+学号后两位。功能为:记录当前用户删除对象的信息。提示:可以创建一个表来实现记录功能create table ddl_drop(User_id varchar2(30),Object_type varchar2(20),Object_name varchar2(30),Object_owner varchar2(30),Create_date date); 。create or replace trigger triDDLlgd79after drop on scott.schemabegininsert into ddl_drop values(ora_login_user,ora_dict_obj_type,ora_dict_obj_name, ora_dict_obj_owner,SYSDATE);end;5. 创建数据库级触发器,名称为triDB+姓名简拼+学号后两位。功能为:记录数据库发生错误的信息。提示:可以通过创建下面的表来实现记录数据库发生错误的信息。 Create table error_log( Timestamp date, Username varchar2(20), Instance number, Database_name varchar2(50), Error_stack varchar2(2000);Sys.login_user返回当前登录的用户名称Sys.instance_num返回实例数Sys.database_name返回数据库名称DBMS_UTILITY.FORMAT_ERROR_STACK返回Error stack。 create or replace trigger triDBlgd79after create on databasebegininsert into ddl_drop values(SYSDATE , Sys.login_user, Sys.instance_num, Sys.database_name, DBMS_UTILIT

温馨提示

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

评论

0/150

提交评论