`
#rethink#
  • 浏览: 44857 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

(转载)用oracle触发器对记录表增加记录的问题

阅读更多

转载自:http://tcrct.iteye.com/blog/341211 

现想对指定用户下的指定表都作一个操作记录,有一个logs表, 

字段          类型 
id          number 
objid       varchar2(50)   --操作表的ID字段 
objname     varchar2(20)   --操作表的名称 
optione      varcahr2(20)   --操作类型(增删改) 
createtime  date           --logs记录创建时间 

需求就是,创建一个触发器,当对用户下的指定表进行增删改时,就对logs表增加一条操作记录。网上搜了很久都没有找到所要的答案,不知如何能自动得知操作表的ID号及正在进行的是那种类型的操作。 

具体操作如下: 

创建一个触发器如下: 

Sql代码 
  1. create or replace trigger tr_test   
  2. after update or delete or insert   
  3. on t_test   
  4. for each row   
  5. begin   
  6.   if inserting then   
  7.   insert into t_logs  values(seq_logid.nextval,:new.id,'t_test','insert',sysdate);   
  8.   elsif updating then   
  9.   insert into t_logs  values(seq_logid.nextval,:old.id,'t_test','update',sysdate);   
  10.   elsif deleting then   
  11.   insert into t_logs  values(seq_logid.nextval,:old.id,'t_test','delete',sysdate);   
  12.   end if;   
  13. end;[  



tr_test :触发器名字 
on t_test:对那个表进行触发 
for each row:行级触发器 
begin.....end:具体操作步骤 
其中,:new.id是指insert后的ID号,old.id是指更新或删除后的ID号。seq_logid.nextval是指序列号,要建立一个q名为seq_logid的序列号
分享到:
评论

相关推荐

    Oracle触发器实验报告

    表employees和department存在参照完整性约束,在表employees中插入记录(‘70’,‘999’)department_id为‘999’时,department表中还不存在department_id为‘999’的记录,所以违背了参照完整性约束,出现...

    触发器实现sql记录

    在许多应用中,需要保存某个数据表的历史记录,以供以后查询,在 SQL Server 2000 中,可以利用触发器轻松实现历史记录功能。 在触发器中,需要用到 SQL Server 的 inserted 和 deleted 两个虚拟表,在执行 sql ...

    ORACLE统计表记录数

    ORACLE 数据库中如何统计表记录数的过程说明

    oracle触发器实例讲解

    oracle触发器实例讲解2008-11-27 09:17--[6]// Oracle Trigger ---------------------------------------------------------------------------------------------// --实例1------------------------ --创建触发器...

    Oracle触发器备份表数据

    1.通过行触发器备份表数据  – 创建备份表,首次将数据全部备份 ...  – 创建行触发器:当emp2有数据被删除时,将数据备份到emp2_bak表中,并记录删除时间  create or replace trigger autoBakEmp2  before

    oracle监控某表变动触发器例子(监控增,删,改)

    使用oracle触发器 实现对某个表的增改删的监控操作,并记录到另一个表中。 代码: 代码如下:create or replace trigger test_trigger before insert or update or delete on test_table for each row declare v_...

    一个DDL触发器例子(阻止DDL并记警告日志)

    有时我们需要控制用户对表执行DDL操作,包括truncate等操作。为了达到灵活控制的目的,我们使用了DDL trigger

    详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生:  业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本库的目标表。这个过程有可能 多人同时抽数,互相影响。有测试人员反应,原来抽过...

    Oracle触发器trigger详解

    每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。 举个简单的例子: 当员工表中新增一条记录后,自动打印“成功插入新员工” create or replace ...

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    实验六-触发器实验报告.doc

    理解Oracle触发器的种类和用途 2. 掌握行级触发器的编写 [预备知识] 1. PL/SQL程序设计 [实验原理] 1. 建立触发器 CREATE [OR REPLACE] TRIGGER <触发器名> BEFORE"AFTER INSERT"DELETE"UPDATE OF <列名> ON <表名>...

    Oracle学习记录之使用自定义函数和触发器实现主键动态生成

    很早就想自己写写Oracle的函数和触发器,最近一个来自课本的小案例给了我这个机会。现在把我做的东西记录下来,作为一个备忘或者入门的朋友们的参考。  案例介绍:  招投标管理系统(数据库设计)。  数据表有...

    Oraclet中的触发器

    -- 将修改前数据插入到日志记录表 del_emp ,以供监督使用。 INSERT INTO emp_his(deptno , empno, ename , job ,mgr , sal , comm , hiredate ) VALUES( :old.deptno, :old.empno, :old.ename , :old.job, :old....

    Oracle 当前用户下所有表的记录总数

    您可能感兴趣的文章:shell脚本操作oracle删除表空间、创建表空间、删除用户杀掉oracle在线用户脚本分享[Oracle] 如何使用触发器实现IP限制用户登录在命令行下进行Oracle用户解锁的语句深入探讨:Oracle中如

    oracl触发器

    oracle触发器可以在特定条件下执行数据库操作,比如常见的有一张表新增一条记录后触发触发器在另外一张表里面也新增相应的记录。

    Oracle创建主键自增表(sql语句实现)及触发器应用

    主键自增在插入数据的时候是很实用的,可以获取并操作返回的插入记录的ID,接下来介绍Oracle如何创建主键自增表,感兴趣的你可以了解下,就当是巩固知识,希望此文对你有所帮助

    Oracle数据库SQL基本应用与介绍

    Oracle不仅可以通过基本的sql进行简单的数据操作,还可使用对标准sql进行了扩展的PL/SQL语言,可使用如IF…THEN…、WHILE、LOOP等同结构化程序语言一样的构造制作程序,还有制作函数、过程、触发器等也用PL/SQL语言...

    oracle 触发器 学习笔记

    功能: 1、 允许/限制对表的修改 2、 自动生成派生列,比如自增字段 3、 强制数据一致性 4、 提供审计和日志记录 5、 防止无效的事务处理 6、 启用复杂的业务逻辑 开始 create trigger biufer_employees_department_...

Global site tag (gtag.js) - Google Analytics