两个经典的Oracle触发器示例 .

转载 2015年07月09日 10:00:14

【案例一】

题目:
--触发器:
--添加员工信息,流水号作为自动编号(通过序列生成),
--并且判断如果工资小于0,则改为0;如果大于10000,则改为10000。

CREATE TABLE emp2(
e_id NUMBER,
e_no NUMBER,
e_name VARCHAR2(20),
e_sal NUMBER
)

SELECT * FROM emp2;

CREATE SEQUENCE seq_trg_id;

INSERT INTO emp2(e_id,e_no,e_name,e_sal) VALUES(seq_trg_id.nextval,7788,'章子',
 1000000000000)
INSERT INTO emp2(e_id,e_no,e_name,e_sal) VALUES(seq_trg_id.nextval,7788,'章子怡',-10)


CREATE OR REPLACE TRIGGER trg_add_emp_info
  BEFORE INSERT
  ON emp2
  FOR EACH ROW
  DECLARE
    -- local variables here
  BEGIN
    SELECT seq_trg_id.NEXTVAL INTO :NEW.e_id FROM dual;
    IF  :NEW.e_sal < 0 THEN
       :NEW.e_sal := 0;
    ELSIF  :NEW.e_sal > 10000 THEN
       :NEW.e_sal := 10000;
    END IF;
  END;

 

【 案例二】

题目:

--扩充练习:
--为emp建立触发器,将删除的记录放到emp3表中(autoid,deptno,empno,ename,del_rq-删除日期)
--测试代码

CREATE TABLE emp3(
autoid NUMBER PRIMARY KEY,
deptno NUMBER,
empno NUMBER,
ename VARCHAR2(20),
del_rq DATE
)

CREATE SEQUENCE seq_trg_del_autoid;

INSERT INTO emp
  (empno, ename, deptno)
VALUES
  (114, '阿娇', 10);
 COMMIT;
 
 SELECT * FROM emp;
 
 DELETE emp WHERE empno = 114;
 SELECT * FROM emp3;
 
 答案:

CREATE OR REPLACE TRIGGER trg_del_emp_info
  BEFORE DELETE
  ON emp
  FOR EACH ROW
  DECLARE
    -- local variables here
  BEGIN
    INSERT INTO emp3(autoid,deptno,empno,ename,del_rq)
          VALUES(seq_trg_del_autoid.NEXTVAL,:OLD.deptno,:OLD.empno,:OLD.ename,sysdate);
  END;

 

 

相关文章推荐

关于oracle触发器的两个小例子

今天接到一个任务,需要修改触发器,因为好久都没有看过关于oracle触发器的东东了,所以这里通过两个简单的小例子复习下触发器,以备忘。 1. 案例一 需求:建立触发器,判断员工工资,如果小于0,则改为...
  • zdp072
  • zdp072
  • 2015年01月30日 16:25
  • 800

Oracle存储过程、自定义函数、和触发器 示例

-----一、创建存储过程关键字是:procedure ---1、创建添加商品分类数据的存储过程proc_addproducttype create or replace procedure p...

Oracle视图和触发器简单示例

存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我们想要的数据,视图存在于数据库中,不占物...

触发器示例

  • 2017年08月10日 16:37
  • 2KB
  • 下载

触发器的示例

  • 2013年03月06日 13:09
  • 1009B
  • 下载

SQL server触发器实例讲解(如何实现两个表的关联)

SQL server触发器实例讲解(如何实现两个表的关联) SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序...

SQL创建触发器示例语句

  • 2009年11月20日 09:40
  • 570B
  • 下载

两个关联表间如何建立触发器

实现功能描述:表C由表A、表B关联生成(其中表A、表B在物理库中,表C在内存数据库中),表A、表B数据变化后通过触发器将变化后记录插入到小表C_inc中,通过小表触发,最后用内存库的实时同步功能将C_...
  • hqwang4
  • hqwang4
  • 2011年03月31日 16:58
  • 3521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两个经典的Oracle触发器示例 .
举报原因:
原因补充:

(最多只允许输入30个字)