谈谈几种触发器
来源:互联网 发布:东北大学网络电视网址 编辑:程序博客网 时间:2024/06/08 19:51
谈谈几种触发器
ORACLE数据库有四种触发器,分别是DML、Instead-of、DDL、DB触发器,一般的应用系统中都是用到DML、Instead-of触发器,DDL、DB两种触发器是DBA管理数据库用得比较多
..................
四种触发器分别有不同的作用
一、DML触发器:当发出UPDATE、INSERT、DELETE命令就可以触发已定义好的DML触发器,是最简单和常用的一种触发器
语法:
create or replace trigger trigger_name
after|before insert|update|delete
on table_name
for each row
二、Instead-of触发器:当向一个由多个表联接成的视图作DML操作时,一般情况下是不允许的,这时候就可以用Instead-of触发器来解决这种问题(在触发器写代码分别对各表作相应DML操作),语法是这样的:
create or replace trigger trigger_name
instead of insert|update|delete
on view_name
for each row
三、DDL触发器:当发出CREATE、ALTER、DROP、TRUNCATE命令时会触发已定义好的DDL触发器,这种触发器可以用来监控某个用户或整个数据库的所有对象的结构变化
语法:
create or replace trigger trigger_name
before|after create|alter|drop|truncate
on schema|database
例:
--禁止用CREATE、ALTER、DROP、TRUNCATE命令操作APPS用户的对象
create or replace trigger apps_no_ddl
before create or alter or drop or truncate
on apps
begin
raise_application_error(-20001,'不允许用DDL操作APPS用户的对象');
end;
四、DB事件触发器:当STARTUP、SHUTDOWN、LOGON、LOGOFF数据库时就会触发DB事件触发器,这种触发器可以用来监控数据库什么时候关闭/打,或者用户的LOGON/LOGOFF数据库情况
语法:
create or replace trigger trigger_name
before|after startup|shutdown|logon|logoff
on database
例:
--记录数据库关闭的时间(shutdown类型要用关键字before,startup用after)
create or replace trigger db_shutdown
before shutdown
on database
begin
insert into test_tbl(log_event) values('db shutdown at '||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
commit;
end;
--记录用户LOGON时间(logoff类型要用关键字before,logon用after)
create or replace trigger user_logon_db
after logon
on database
begin
insert into test_tbl(username,logon_time) values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
commit;
end;
注意:要创建DDL和DB事件这两种触发器必须要有DBA的权限才行
- 谈谈几种触发器
- 谈谈几种触发器
- 触发器的几种应用
- Oracle触发器及使用举例(几种触发器类型)
- 谈谈几种典型的反模式
- 谈谈服务端缓存的几种用法
- 谈谈几种公司的特点
- 几句话谈谈JAI
- 几句话谈谈JAI
- 谈谈线程及线程的几种状态
- 简单谈谈Erlang的几种运算符
- 谈谈站长的几种常用赚钱方式
- 谈谈互斥锁和条件变量的几种使用方法
- 谈谈进程间通信的几种方式?
- 谈谈spring定时调度的几种实现方式
- 谈谈垂直分割线的几种写法
- 谈谈移动端屏幕适配的几种方法
- [转]几种java转exe的工具,进行一下比较,谈谈自己的看法:
- 订餐系统的异步上传图片记录
- 励志故事:拥有一颗热忱之心
- VS2012发布网站
- 获救教师自杀
- Weblogic常见故障常:JDBC Connection Pools
- 谈谈几种触发器
- Jetty学习【三】 Handler
- 机会
- SQL 注入
- 人生中的第一次
- C++:float 转型到 std::string
- 简单道理
- 史上最精简,最强大的JavaScript遮罩层效果,支持ie firefox jQuery遮罩层
- 梁静茹顺利产子