触发器实现表的同步操作

一个表在另一个表之后进行同步操做步操作用after insert/update/delete on 表名 并加FOR EACH ROW ,用后触发是在执行触发事件之后触发当前所创建的触发器的操作   

declare 声明变量类型。

如在一个表进行增加一条记录后,在另一个表增加一条记录过程为

首先创触发器名称

create or replace trigger 触发器名称

 after insert on 要同步的表名 
 for each row

declare
   UserName varchar2
32; 要插入新数据库的字段

countNumber number;     判断在数据库中存在不存在记录的统计字段

begin

   countNumber := 0;

判断存在不存在一条相同记录

   select count(*) into countNumber from hr.hr_salary_password h where h.Sys_User_Name = :NEW.user_name;

   if countNumber = 0 then

如不存在,把声明的变量赋值,值为新增加到数据库中的记录。

   UserName :=:NEW.user_name;

 

同步操作,把记录插入到要同步的数据库中。

   insertinto hr.hr_salary_password(sys_user_name,)

    values(UserName);

   end if;

加入异常处理

EXCEPTION

 WHEN OTHERS THEN

      dbms_output.put('系统连接异常'); 

 RETURN;

 

       FOR EACH ROW选项说明触发器为行触发器。行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。当省略FOR EACH ROW 选项时,BEFORE AFTER 触发器为语句触发器,而INSTEAD OF 触发器则为行触发器。

       REFERENCING 子句说明相关名称,在行触发器的PL/SQL块和WHEN 子句中可以使用相关名称参照当前的新、旧列值,默认的相关名称分别为OLDNEW。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号,但在WHEN子句中则不能加冒号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值