码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-13 01:17:07      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

系统触发器

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

 

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

 

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

系统触发器事件

NO. 事件 触发时机 描述
1 STARTUP AFTER 数据库实例启动之后触发
2 SHUTDOWN BEFORE 数据库实例关闭之前触发
3 SERVERERROR AFTER 出错误时触发
4 LOGON AFTER 用户登录后触发
5 LOGOFF BEFOR 用户注销前触发

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

--创建序列
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 DATABASE

DECLARE

BEGIN
  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;

 

 

 

 

 

 

 

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

标签:

原文地址:http://www.cnblogs.com/liunanjava/p/4220194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!