SQL触发器及视图

来源:互联网 发布:php木马扫描器 编辑:程序博客网 时间:2024/06/08 19:44

触发器:当emp表一条记录被删时,把被删记录写到日指表

Create table del_emp as select * from emp where 1=2;Select * from emp;Create or replace trigger tr_del_empBefore deleteOn empFor each RowWhen (old.deptno<>10)BeginInsert into    ;

触发器类型:
1. 模式触发器(DDL):模式中DDL语句;
2. 数据库级触发器:开、关、登、退数据库系统事件时执行;
3. DML触发器:行级、语句级、instead of(视图)触发器。

触发器的三个部分:
1. 触发器语句(事件):定义激活触发器的DML事件、DDL事件

Before deleteOn empFor each row

2. 触发器限制:执行触发器条件,条件为真时才激活触发器

When (old.dept<>10)
  1. 触发器操作(主体):包含一些SQL语句、代码,在触发语句发出且触发条件为真时运行。
BeginInsert into del_emp(deptno,empno,… …)  // :old 即将删除的数据  :new 即将插入的数据Values(:old.deptno,:old.empno,… …);End;

触发器:

Alter  trigger 名字 disable;//禁用触发器Drop trigger 名字 enable;//启用触发器

视图(虚拟表):

Grant create view to scott select on v1;Create view v1 as select * from emp;Select * from v1;Grant/revoke create view select on v1;Create or replace trigger giud_emp_rowAfter insert or delete or updateOn empFor each row    //行级触发器,去掉为语句级触发器BeginIf updating thenDbms_output.put_line(‘order_master中数据更新’);Else if deleting then                      ;Else if inserting then                      ;End if;End;
0 0
原创粉丝点击