`

Oracle的触发器的练习

 
阅读更多
  --    1、用触发器来实现主键自动增长
  --    2、数据操作日志记录 emp。
create or replace trigger TRI_AUTO_HWL
  before insert on emp_hwl  
  for each row
declare
  -- local variables here
  v_addId number;--    增长后的Id
  v_curtId number;--    当前Id
begin
  select max(e.empno) into v_curtId from emp_hwl e;
  if v_curtId is null then 
    v_addId := 1;
  else
    v_addId := v_curtId + 1;  
  end if;
  select v_addId into :new.empno from dual;
  dbms_output.put_line(v_curtId ||'   ------------');
end TRI_AUTO_HWL;

CREATE OR REPLACE TRIGGER TRI_EMP_INSERT_HWL
  BEFORE INSERT OR UPDATE OR DELETE --insert update delete 触发   
ON emp_hwl
  FOR EACH ROW
DECLARE

BEGIN

  IF inserting THEN
    insert into EMP_LOG_HWL
      (autoId, addTime, oprate, tableName, EMPNO)
    values
      (SEQ_TEST.NEXTVAL, trunc(sysdate), 'insert', 'emp_hwl',:old.empno);
  ELSIF updating THEN
    insert into EMP_LOG_HWL
      (autoId, addTime, oprate, tableName, EMPNO)
    values
      (SEQ_TEST.NEXTVAL, trunc(sysdate), 'update', 'emp_hwl',:old.empno);
  ELSIF deleting THEN
    insert into EMP_LOG_HWL
      (autoId, addTime, oprate, tableName, EMPNO)
    values
      (SEQ_TEST.NEXTVAL, trunc(sysdate), 'delete', 'emp_hwl',:old.empno);
  END IF;
END TRI_EMP_INSERT_HWL;
--    测试
insert into emp_hwl
  (ENAME, JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values
  ('汉斯','SALESMAN',7902,to_date('2014/5/30','yyyy/mm/dd'),5000,1000,10);

delete emp_hwl e where e.ename = '汉斯';

 注意:触发器中不能有事务控制语句(commit/callback/savepoint),因其不能保证事务的完整性,若加入自治事务则可以。只需PL/SQL的声明部分加PRAGMAAUTONOMOUS_TRANSACTION就可以了。

 

分享到:
评论

相关推荐

    oracle触发器

    oracle触发器 练习,语句,应用,用法

    oracle练习题关于触发器的作业

    一点关于oracle的练习题!较难~慢慢看吧!~受打击了别管我啊!!!!

    oracle-触发器练习.pdf

    oracle-触发器练习.pdf

    oracle 触发器 必懂

    第 9 章 触发器 9.1 触发器的种类和触发事件 9.2 DML 触发器 9.3 数据库事件触发器 9.4 DDL事件触发器 9.5 替代触发器 9.6 查看触发器 9.7 阶段训练 9.8 练习

    如何写触发器只要练习这些简单例子

    数据库中的触发器,从简单到复杂,只需急着这些例子,从浅入深学习

    oracle存储过程超详细使用手册.

    oracle 存储过程的基本语法,关于oracle存储过程的若干问题备忘,oracle 存储过程语法总结及练习;oracle语法:Oracle触发器语法及实例基础知识(一)。

    oracle 练习题

    oracle 练习题

    Oracle 复习用脚本

    Oracle复习用脚本文件(相当全) 包括授权 查询 触发器 过程函数的调用

    Oracle数据库(触发器、存储过程、函数、包)

    知识点一、触发器(trigger)  推荐练习文档:  http://wenku.baidu.com/link?url=brtd9myO4XIaEjRPaRB0yWgV2_TfXmNxS6KKjB_avq7d0hPs3SknJdrs-JLtWe–H-f3q-I61HUxkcqqAFMC0z6Zf65QBbmFRB8TAlULmGS  ...

    oracle10g课堂练习I(2)

    练习概览:安装 Oracle 软件 2-21 3 创建 Oracle 数据库 课程目标 3-2 为数据库制定计划 3-3 数据库:示例 3-4 Database Configuration Assistant (DBCA) 3-5 使用 DBCA 创建数据库 3-6 口令管理 3-12 ...

    Oracle 学习总结

    Oracle 学习总结,包含从Oracle入门到触发器的学习,内含一些学习中的练习题及资源

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    北大青鸟Oracle教程集

    PPT目录: 第一章 Oracle入门; 第二章 查询和SQL函数; 第三章 锁和表分区; 第四章 数据库对象; 第五章 Oracle 中的 OOP 概念;...第六章 PL/SQL 简介;...第九章 数据库触发器和内置程序包; 第十章 集合和成员函数。

    Oracle Database 11g初学者指南--详细书签版

     ·实践练习——演示如何应用在每章学到的关键技术  ·学习效果测试——对学习效果的快速自我评估  ·注意——与所介绍主题相关的额外信息  ·章节测验——每章结束时的测验测试读者对所学知识的掌握程度 作...

    oracle进阶之plsql编程

    oracle进阶之plsql编程内容提要:通过对PL/SQL基础语法和存储函数、存储过程、包、触发器等数据库对象的概念及基本语法的学习与练习,达到学以致用的目的,并能在应用程序中调用存储函数及过程。

    Oracle数据库基础

    介绍了Oracle基础,sql基础,存储过程开发等

    韩顺平oracle学习笔记

    记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要 成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解 Oracle基础部分:oracle基础使用; ...

    Oracle 10g 开发与管理

    本文是由笔者2012年学习oracle数据库时编写的学习札记,其中的题目 多数为老师留下的思考题目。 我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 ...

Global site tag (gtag.js) - Google Analytics