ORACLE的简单触发器实现

对于触发器,我个人感觉能很好的解决两个关联表的数据关系,当一个表改变的时候,所设置的触发就会根据触发器里面的条件来改变要改变表的数据,

主要还是DDL(INSERT,DELETE,UPDATE)在其前面还要加上是(AFTER ,  BEFORE),来判断是在之前还是之后。

              一个简单的触发器是这样的,比方有一个emp表,表的结构为:

CREATE TABLE EMP
  (
    ID     NUMBER(4,0),
    NAME   VARCHAR2(50 BYTE) NOT NULL ENABLE,
    AGE    NUMBER(11,0),
    SALARY NUMBER(7,2),
    MARRY  CHAR(1 BYTE),
    BIRTHDAY DATE,
    LAST_LOGIN_TIME DATE }

在来一个相同 的表:

CREATE TABLE emp_my AS SELECT * FROM EMP WHERE 1=2;

下面就建一个触发器,是当删除EMP表中的数据时把这个删除的数据放到EMP_MY表里面,

CREATE   OR  REPLACE  TRIGGER   TRIGGER_NAME
  BEFORE  DELETE  -- 这个意思是在删除之前来执行这个触发 器。
  ON  EMP   ---  on  是必须要的  EMP是你想操作的表,
   BEGIN  
   INSERT  INTO  EMP_MY  (COLUMN ,....) VALUES  (:OLD.COLUMN,....);
   END;

触发器的一般语法:

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }   -- 这个选其一
{INSERT | DELETE | UPDATE [OF column [, column …]]}  这个是DDL动作,后面的是你所要执行的表中的字段,
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...] 这个是你可以在三种动作中使用这个触发器,  中间用 OR来 连接
ON [schema.]table_name | [schema.]view_name    ----   这个是在做动作的表名
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]    ----  这个是代表是 行触发器
[WHEN condition]     这个是你执行表,在什么条件下来触发这个触发器 条件
PL/SQL_BLOCK | CALL procedure_name;   ---  你所想要执行这个触发器之后得到的结果。用sql来表达出来 

  这个就是最简单的一个触发器。

还要了解更深的:请点这个:http://blog.csdn.net/indexman/article/details/8023740/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值