系统触发器

目录

数据库触发器

常见触发器,记录登录和退出数据库事件

模式触发器

[创建一个模式触发器,记录各种 DDL 操作的日志](#创建一个模式触发器,记录各种 DDL 操作的日志)


Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

前面已经介绍过,系统触发器可以细分为数据库触发器和模式触发器。

数据库触发器是指在 Oracle数据库的系统事件发生时进行触发,例如系统启动或者退出、异常错误等。

模式触发器是在执行 DDL语句时触发的,例如执行创建、修改或者删除的 CREATE、ALTER、DROP 语句。

数据库触发器

根据数据库中进行日常启动、退出等操作,可以建立触发器,跟踪这些信息

常见触发器,记录登录和退出数据库事件

分析:

要想记录登录和退出数据库的情况,必须建立一张数据表用于记录登录和退出的日志。建立数据表的代码如下所示。

sql 复制代码
CREATE TABLE user_log(
    User_name VARCHAR2(20),
    Login_date TIMESTAMP,
    Logoff_date TIMESTAMP);

由于要记录所有用户登录和退出数据库的情况,因此使用管理员用户登录。

sql 复制代码
CONN sys/change_on_install AS SYSDBA:

然后创建日志数据表。

下面就分别创建登录和退出的触发器,使得当登录或者退出的时候,向创建的日志数据表中添加数据,如下图所示。

上图是登录数据库时会执行的触发器。下图是退出数据库时会执行的触发器。

下面就尝试使用不同用户登录和退出测试一下所创建的触发器是否可以工作。最后查询该数据表如下图所示。

如上图所示,可以看到不同用户登录和退出的时间。

模式触发器

模式触发器是在指执行 DDL语句时触发的,例如执行创建、修改或者删除的 CREATE、ALTER,DROP 等语句。

创建一个模式触发器,记录各种 DDL 操作的日志

分析:

这个范例由于要记录日志,因此首先也要创建一个日志文件,如下所示。

sql 复制代码
CREATE TABLE DDL_log(
    user_name VARCHAR2(20),  --操作用户			
    action_date DATE,  --操作日期
    action VARCHAR2(20),  --操作动作
    object_name VARCHAR2(20),  --操作对象		
    object _type VARCHAR2(20));  --操作对象的类型

如上图所示,当发生 CREATE、ALTER 或者 DROP 事件时,触发上面的触发器,向日志数据表中插入数据。

下面通过几个简单的测试验证触发器是否可用。分别创建一个数据表,修改数据表结构,创建一个视图,删除一个视图,删除一个数据表,如下所示。

sql 复制代码
CREATE TABLE goods(goods_id NUMBER,goods_name VARCHAR2(20));
ALTER TABLE goods ADD(price NUMBER);
CREATE VIEW view1 AS SELECT goods_id FROM goods;
DROP VIEW view1;
DROP TABLE goods;

现在查询创建的日志文件,如下图所示

可以看出,日志文件记录了所有的 DDL操作。

相关推荐
头茬韭菜几秒前
4.1-4.2 工具注册 — Fail-Closed 类型安全设计与四层工具架构
java·安全·架构
SimonKing几秒前
Base62编码生成6位不重复短码的背后设计
java·后端·程序员
折哥的程序人生 · 物流技术专研2 分钟前
Java 23 种设计模式:从踩坑到精通 | 番外:状态 vs 策略 —— if-else 消除的两条路,你走对了吗?
java·spring·状态模式·策略模式·java面试·java设计模式·从踩坑到精通
等什么秋8 分钟前
idea2024下载
java·ide·intellij-idea
她说彩礼65万21 分钟前
Asp.net core 返回类型
数据库·后端·asp.net
学计算机的计算基22 分钟前
LeetCode 图论四题精讲:BFS、拓扑排序、Trie 树的模板与优化
java·笔记·算法
浩瀚地学23 分钟前
【面试算法笔记】0202-链表-基本功能实现
java·经验分享·笔记·算法·面试
3DVisionary27 分钟前
如何用单目高速DIC把“看不见“的振动变成“数得清“的数据
java·spring boot·python·数码相机·微小振动·精密件·单目高速dic
weixin_3077791331 分钟前
Linux下Docker Compose里运行Milvus向量数据库故障诊断Shell脚本
linux·运维·数据库·docker·milvus
tkevinjd33 分钟前
416分割等和子集
java·python·算法·leetcode·职场和发展