首页 > 代码库 > 触发器六(系统触发器)(学习笔记)

触发器六(系统触发器)(学习笔记)

系统触发器

系统触发器用于监视数据库服务的打开、关闭、错误等信息的取得,或者是监控用户的行为操作等。如果要创建系统触发器,可以使用如下的语法

 

CREATE [OR REPLACE] TRIGGER 触发器名称    [BEFORE | AFTER] [数据库事件] ON [DATABASE | SCHEMA]    [WHEN 触发条件]    [DECLARE]        [程序声明部分 ;]    BEGIN        程序代码部分 ;    END [触发器名称] ;

 

使用管理员才可以创建系统触发器

系统触发器事件

NO.事件触发时机描述
1STARTUPAFTER数据库实例启动之后触发
2SHUTDOWNBEFORE数据库实例关闭之前触发
3SERVERERRORAFTER出错误时触发
4LOGONAFTER用户登录后触发
5LOGOFFBEFOR用户注销前触发

示例一、登录登出日志功能

--创建序列CREATE SEQUENCE user_log_seq;--创建日志表CREATE TABLE user_log(             logid          NUMBER CONSTRAINT  pk_logoid PRIMARY KEY,             username       VARCHAR2(50)           NOT NULL,             logodate       DATE,             logoffdate     DATE,             ip             VARCHAR2(20),             logtype        VARCHAR2(20));
--创建登录触发器create or replace trigger logon_trigger  AFTER LOGON ON DATABASE  declare begin   INSERT INTO user_log(logid,username,logodate,ip,logtype)  VALUES(user_log_seq.nextval,ora_login_user,SYSDATE,ora_client_ip_address,LOGON);end logon_trigger;
--创建登出触发器CREATE OR REPLACE TRIGGER LOGON_TRIGGER  BEFORE LOGOFF ON DATABASEDECLAREBEGIN  INSERT INTO USER_LOG    (LOGID, USERNAME, LOGOFFDATE, IP, LOGTYPE)  VALUES    (USER_LOG_SEQ.NEXTVAL,     ORA_LOGIN_USER,     SYSDATE,     ORA_CLIENT_IP_ADDRESS,     LOGFF);END LOGON_TRIGGER;

切换用户进行登录

使用管理登录,查看user_log表

SELECT * FROM user_log;

 

 

 

 

 

 

 

触发器六(系统触发器)(学习笔记)