需求:
用户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;
会看到刚才满足条件后的记录。