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

系统触发器

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

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;

 

时间: 2024-08-19 12:13:49

触发器六(系统触发器)(学习笔记)的相关文章

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述

六、Android学习笔记_JNI_c调用java代码

1.编写native方法(java2c)和非native方法(c2java): package com.example.provider; public class CallbackJava { // C调用java空方法 public void helloFromJava() { System.out.println("hello from java"); } // C调用java中的带两个int参数的方法 public int Add(int x, int y) { int res

linux系统构建学习笔记

嵌入式系统构架:(硬件+软件)应用软件层: Application GNU C Library(glibc)文件系统: 系统层: API(Systern Call Interface) OS Core + Power Mannager+ File Manager + GUI Mannager TCP/IP HTTP WAP DataBase Browser DDI(Device Drver Interface) 板级支持:BSP:Board Support Package       OEM A

Unity3d Mecanim动画系统Animator学习笔记

1. unity3d Mecanim学习  Unity3d新版动画系统网上的介绍很多,但多是流水笔记,外人很难看明白,后来我 终于找到介绍的比较明白的两个作者,特别感谢.一个是58开发网的乐天老师,课程 视频网址:http://www.58kaifa.com/course/24, 这是一个免费的视频课程,讲解的 很仔细,很清除.另一个是博客园的 阿诚de窝,文章地址:http://www.cnblogs.com/hammerc/category/647246.html, 各个控制面板上的参数含义

Oracle系统工具包(学习笔记)

Dbms_Output包 No. 子程序名称 描述 1 enable 打开缓冲区,当用户使用 “SET SERVEROUTPUT ON”命令时,自动调用此语句 2 disable 关闭缓冲区,当用户使用 “SET SERVEROUTPUT OFF”命令时,自动调用此语句 3 put 将内容保存到缓冲区中,不包含换行符,等执行put_line时一起输出 4 put_line 直接输出指定内容,包括换行符 5 new_line 在行尾添加换行符,在使用PUT时必须依靠new_line来添加换行符 6

系统虚拟化学习笔记——PCI设备

内容摘自<系统虚拟化:原理与实现> PCI 总线架构 PCI总线是典型的树结构.把北桥中host-PCI桥看做根,总线中其他PCI-PCI桥,PCI-ISA桥(ISA总线转PCI总线桥)等桥设备和 直接连PCI总线的设备看做节点,整个PCI架构可以概括成下图: 通过桥,PCI可以很容易被扩展,并且与其他总线相互挂接,构成整个系统的总线网络.与HOST-PCI桥相连的总线称为总线0, 其他层次总线的编号,是在BIOS(或者操作系统)枚举设备时确定的. 设备标识符 设备标识符可以看做设备在PCI总

设计模式与系统架构学习笔记之设计模式部分

模式: 一个特定的环境,一个问题,一个解决方案 核心思想:进行设计的复用 环境+问题+解决方案 设计模式:描述了定制化的相互通行的对象与类,以及解决特定环境中的通用设计问题. 单例模式: 确保一个类仅有一个唯一的实例,并且提供一个全局的访问点. 解决方案: 将构造函数声明称私有类型,屏蔽通过直接实例化的形式来访问: 控制全局只有一个实例的类-Static: 提供一个可以获得实例的方法,用于返回类的实例,并且保证得到的是同一个对象: (是否已经存在,存在的话,直接返回:不存在的话,创建新的实例,再

win7系统git学习笔记(一)

git仓库里的文件只有两种状态,一种是已跟踪(tracked),一种是未跟踪(untracked).已跟踪的文件中又分为未更新(unmodified),已修改(modified),已放入暂存区(staged). 常用命令: 初始化仓库: $ git init fork: $ git clone git://github.com/schacon/grit.git $ git clone git://github.com/schacon/grit.git 新的文件名 检查文件状态: $ git st

(六)Oracle学习笔记—— 约束

1. 约束介绍 表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性. 按照约束的分类,一共有五种约束:非空约束.唯一约束.主键约束.检查约束.外键约束. 1.1 使用如下命令检索某个表上的所有约束(WHERE条件中的表名和用户名要大写) select * from all_constraints where table_name='EMP' and owner='SCOTT'; 对于表中的CO