Oracle 跨用户表间数据操作(触发器实现)

需求:

     用户hfxcroad中有一个表P_TABLE,创建表语句如下:

    create table P_TABLE
    (
        ID varchar2(50) default SYS_GUID(),
        NC varchar2(50)
    );

    用户fdfxkh中有一个表P_TABLE,创建语句如下:

   create table P_TABLE
   (
       ID varchar2(50) default SYS_GUID(),
       NC varchar2(50),
       V numeric(4)
   );

   当我们在用户fdfxkh的P_TABLE中插入数据,并且V字段值大于15时,向用户hfxcroad的P_TABLE表中插入NC值,模拟由实时数据表产生预警信息表,我们该怎么做?


解决方案:

1、由于是跨用户操作数据,所以第一步我们要将用户hfxcroad中的表P_TABLE的权限授权给fdfxkh用户。

     在用户hfxcroad下执行以下授权SQL:

    GRANT ALTER ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT DELETE ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT INDEX ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT INSERT ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT REFERENCES ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT SELECT ON   hfxcroad.P_TABLE TO fdfxkh;

    GRANT UPDATE ON   hfxcroad.P_TABLE TO fdfxkh;


2、在用户fdfxkh中创建after插入触发器,如下:

    create or replace trigger tr_Warn
    after insert on fdfxkh.P_TABLE
    for each row
    begin
          if :new.V > 15 then
              insert into hfxcroad.P_TABLE(NC) values(:new.NC);
         end if;
    end;


3、在用户fdfxkh中执行插入语句:

    insert into P_TABLE(NC,V) values('20141203',25);

   

4、到用户hfxcroad中执行查找语句:

    select * from P_TABLE;

   会看到刚才满足条件后的记录。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值