其他分享
首页 > 其他分享> > Orcal创建触发器

Orcal创建触发器

作者:互联网

在工作,发现公共的一张表某个字段的数据一直被删除。但是系统庞大,短时间难以定位是哪里删除了这些数据。因此萌生了创建一个触发器【审计开销太大】,记录删除这张表的操作。遗憾的是Orcal 11无法使用ora_sql_txt记录操作的SQL语句。

一、触发器语法

-- 创建触发器
create or replace trigger 触发器名
  before|after|instead of 触发时间
  on 触发对象 表|视图 (for each row)
  begin
    触发操作
  end;

参考

 

 

二、实例

--1.创建删除记录表 监控用户删除某个表的操作
--drop table ZT_DELETETABLEINFO;
create table ZT_DELETETABLEINFO
(
  operatoruser      VARCHAR2(20),
  machine      VARCHAR2(32),
  ip      VARCHAR2(32),
  operatortime   DATE,
  dmlsql    VARCHAR2(4000),
  tablename     VARCHAR2(256)
);
comment on table ZT_DELETETABLEINFO is '删除记录表';
comment on column ZT_DELETETABLEINFO.operatoruser is '操作用户';
comment on column ZT_DELETETABLEINFO.operatoruser is '机器';
comment on column ZT_DELETETABLEINFO.ip is '操作IP';
comment on column ZT_DELETETABLEINFO.operatortime  is '操作时间';
comment on column ZT_DELETETABLEINFO.dmlsql is '执行的SQL语句';
comment on column ZT_DELETETABLEINFO.tablename is '被删除的表';

--2.创建触发器 监控 删除表记录
--drop trigger ZT_DELETETABLEINFO_TRIGGER
create trigger ZT_DELETETABLEINFO_TRIGGER
  before delete on if_quotaresult
begin
  insert into ZT_DELETETABLEINFO
    (operatoruser, machine, ip, operatortime, dmlsql,tablename)
  values
    (user,SYS_CONTEXT('USERENV', 'HOST'),sys_context('userenv', 'ip_address'),sysdate,'','if_quotaresult');
end;

 

标签:comment,DELETETABLEINFO,触发器,删除,column,创建,ZT,Orcal
来源: https://www.cnblogs.com/zeussbook/p/14188989.html