版权声明:【北京Java青年】:456588754 https://blog.csdn.net/Amen_Wu/article/details/53457564
触发器:当emp表一条记录被删时,把被删记录写到日指表
Create table del_emp as select * from emp where 1=2; Select * from emp; Create or replace trigger tr_del_emp Before delete On emp For each Row When (old.deptno<>10) Begin Insert into ;
触发器类型:
- 模式触发器(DDL):模式中DDL语句;
- 数据库级触发器:开、关、登、退数据库系统事件时执行;
- DML触发器:行级、语句级、instead of(视图)触发器。
触发器的三个部分:
1. 触发器语句(事件):定义激活触发器的DML事件、DDL事件
Before delete On emp For each row
2. 触发器限制:执行触发器条件,条件为真时才激活触发器
When (old.dept<>10)
- 触发器操作(主体):包含一些SQL语句、代码,在触发语句发出且触发条件为真时运行。
Begin Insert 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_row After insert or delete or update On emp For each row //行级触发器,去掉为语句级触发器 Begin If updating then Dbms_output.put_line(‘order_master中数据更新’); Else if deleting then ; Else if inserting then ; End if; End;
文章来源: https://blog.csdn.net/Amen_Wu/article/details/53457564