首页 > 其他分享 >oracel触发器

oracel触发器

时间:2024-04-22 16:11:18浏览次数:23  
标签:AUDIT 触发器 LOG oracel SAMPLE TABLE ID

1. 创建测试表
首先,创建一个名为 SAMPLE_TABLE 的简单测试表,包含两个字段:ID 和 DATA。
CREATE TABLE SAMPLE_TABLE (
ID NUMBER PRIMARY KEY,
DATA VARCHAR2(50)
);
2. 创建触发器对应的审计日志表及辅助序列
创建一个名为 AUDIT_LOG 的表,用于记录触发器触发时的相关信息。
这里假设包含以下字段:LOG_ID(自增主键,通过序列生成)、
TABLE_NAME(触发操作的表名)、ACTION_TIME(操作时间戳)、
ACTION_USER(操作用户)。同时,创建一个名为 AUDIT_LOG_SEQ 的序列,用于为 LOG_ID 字段生成唯一值。
CREATE SEQUENCE AUDIT_LOG_SEQ START WITH 1 INCREMENT BY 1;
CREATE TABLE AUDIT_LOG (
LOG_ID NUMBER PRIMARY KEY,
TABLE_NAME VARCHAR2(30),
ACTION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ACTION_USER VARCHAR2(30) DEFAULT USER
);
3. 创建触发器
接下来,创建一个名为 SAMPLE_TRIGGER 的触发器,该触发器将在每次向
SAMPLE_TABLE 插入数据后自动执行。触发器的功能是记录插入操作的时间戳和操作用户到 AUDIT_LOG 表中。
CREATE OR REPLACE TRIGGER SAMPLE_TRIGGER
AFTER INSERT ON SAMPLE_TABLE
FOR EACH ROW
BEGIN
INSERT INTO AUDIT_LOG (LOG_ID, TABLE_NAME, ACTION_USER)
VALUES (AUDIT_LOG_SEQ.NEXTVAL, 'SAMPLE_TABLE', USER);
END;


4. 验证触发器是否已创建 使用以下SQL查询检查触发器是否已成功创建:
SELECT * FROM USER_TRIGGERS WHERE TRIGGER_NAME = 'SAMPLE_TRIGGER';
5. 向测试表插入数据
现在,您可以向 SAMPLE_TABLE 插入数据,每次插入后,触发器 SAMPLE_TRIGGER 都会自动将操作时间和操作用户记录到 AUDIT_LOG 表中。
INSERT INTO SAMPLE_TABLE (ID, DATA) VALUES (1, 'Data 1');
INSERT INTO SAMPLE_TABLE (ID, DATA) VALUES (2, 'Data 2');
-- ... 进行更多插入操作 ...
6. 查询触发器效果 通过查询 AUDIT_LOG 表,验证触发器是否正确记录了插入操作。
SELECT * FROM AUDIT_LOG WHERE TABLE_NAME = 'SAMPLE_TABLE';
7. 删除触发器
DROP TRIGGER SAMPLE_TRIGGER;

 


查询所有触发器 :SELECT * FROM USER_TRIGGERS;

标签:AUDIT,触发器,LOG,oracel,SAMPLE,TABLE,ID
From: https://www.cnblogs.com/liaoenqi/p/18150834

相关文章

  • MySQL触发器
    MySQL触发器触发器是预先定义的一段SQL语句,当在某个表上执行INSERT/UPDATE/DELETE操作之前或之后,会自动执行触发器。创建触发器CREATETRIGGERtrigger_nameAFTER/BEFOREINSERT/UPDATE/DELETEONtable_nameFOREACHROWBEGIN--触发器操作的SQL语句END;查看触发器......
  • 游标,触发器,循环复习
    ----for循环---------------------------------------FOR...in...LOOPENDLOOP;BEGINFORiIN1..10LOOPdbms_output.put_line(i);ENDLOOP;END;问题1到50?3到40?----while循环----------------------------------WHILE...LOOPEND......
  • vivado 探针用作为数据和/或触发器、使用 XDC 命令来插入调试核
    您可在Vivado硬件管理器中自定义探针,将其用作为数据和/或触发器。如果探针参与触发或采集比较值,则应将其配置为仅限“触发器”探针。这样即可最优化ILA核使用BRAM的方式。通常,如需采集探针数据,则应将其配置为仅限“数据”探针。如果探针同时参......
  • 行为和触发器
    目录什么是行为和触发器?行为和触发器的区别?什么是行为和触发器?监控一组逻辑,当条件满足时,自动执行一组响应逻辑。监控一组控件,当它们发生属性值变化,或发生了事件,亦或它们发生了更复杂的属性事件逻辑,然后操作一组其他控件。行为和触发器的区别?触发器分为监控逻辑Trigger和响应......
  • Jenkins设置定时触发器执行任务
     1.选中任务,选择配置/构建触发器,选择定时构建  2.填写定时器参数,格式说明如下,共五个参数,参数之间空格隔开,不需要填的直接*号即可。  此处d定时任务的格式遵循cron的语法(可以与cron的语法有轻微的差异)。具体格式,每行包含5个字段,依次为分钟、小时、日、月、星期几,并......
  • openGauss 事件触发器
    事件触发器可获得性本特性自openGauss5.0.0版本开始引入。特性简介支持事件触发器,允许捕获DDL操作并做相应处理。客户价值典型使用场景是:通过事件触发器捕获DDL操作和目标对象,来实现数据同步。特性描述事件触发器支持捕获当前数据库下的ddl操作以及ddl操作的目标对象(事件......
  • 2024年3月28日-UE5-地图触发器,摄像机控制,后期盒子,关卡蓝图
    在全局蓝图里加一句简单的话测试下 然后选打印输入一句话 新建一个触发框 调整位置 然后改名 创建一个平面放到之前触发框的位置 选中关卡触发器,然后打开关卡蓝图然后右键点击,然后选第一个,为这个关卡触发器添加逻辑   当ACTOR进入触发器区域,输出前......
  • KingbaseES 通过触发器实现查看表的创建时间
    从oracle迁移至KingbaseES的用户,经常会问在KingbaseES中怎么查询表的创建时间。由于KingbaseES本身并不直接存储表的创建时间,所以获取这一信息通常需要依赖于间接方法或日志记录。如果确实有这种需求,可以通过创建事件触发器的将相关的信息保存下来。建立保存信息的数据表CREAT......
  • 数据库实验(一)SQL Server触发器
    目录触发器的定义触发器和存储过程的区别触发器的优点触发器的作用触发器的分类DML触发器DDL触发器登录触发器触发器的工作原理inserted表deleted表创建触发器编程要求测试要求: 实验代码:触发器的定义触发器是建立在触发事件上的。例如,对表执行INSERT、U......
  • MogDB/opengauss触发器简介(1)
    MogDB/opengauss触发器简介(1)触发器是对应用动作的响应机制,当应用对一个对象发起DML操作时,就会产生一个触发事件(Event)。如果该对象上拥有该事件对应的触发器,那么就会检查触发器的触发条件(Condition)是否满足,如果满足触发条件,那么就会执行触发动作(Action)。事件:触发器的触发事件,......