您好,欢迎访问一九零五行业门户网

Oracle中的System Triggers(DDL触发器)

oracle数据库中的system trigger可以建立在schema(在某些ddl语句执行的时候触发)或者database(主要在系统层面触发,比如说登陆
这算是比较偏门的知识了,但是有很多实际意义,可以帮助dba完成一些日常的管理工作,比如可以禁用一些用户的功能(禁止用户修改或者删除某一个表,限制ip登陆等)。
概述
oracle数据库中的system trigger可以建立在schema(在某些ddl语句执行的时候触发)或者database(主要在系统层面触发,,比如说登陆或者发生某些系统级别的报错)。
schema trigger:
创建于某一个schema上面,并且经由某些ddl语句触发执行。具体看下文链接更多的ddl event。
database trigger:
数据库触发器基于数据库之上,由某些数据库级别的事件触发。具体看下文链接更多的database event。
触发模式
与dml触发器一样,有两种触发模式
before:在语句执行前触发
after:在语句执行后触发
这个就不用细说了。
简单示例
限制ip登陆
组织ip为192.168.100.71的机器发出的连接请求。
create or replace trigger limit_ip
afterlogon on database
begin
ifsys_context('userenv', 'ip_address') = '192.168.100.71' then
raise_application_error(-20999, 'cann''t logon this database.');
end if;
end;
c:\users\fengjun>sqlplusscott/tiger@192.168.100.221:1521/repo
sql*plus: release 11.2.0.3.0 production on 星期二 2月 25 09:49:182014
copyright (c) 1982, 2011, oracle.  all rights reserved.
error:
ora-00604: 递归 sql 级别 1 出现错误
ora-20999: cann't logon this database.
ora-06512: 在 line 2
注:如果用户拥有dba权限,则不受此触发器影响。
其它类似信息

推荐信息