oracle triger器

触发器使用定义了这些权限的表的所有者的权限(而不是导致触发器触发的用户的权限,并且不是创建该触发器的用户的权限)执行。
在触发器引用表时,它使用表创建者的组成员资格找到没有指定的显示所有者名称的表。例如,如果 user_1.Table_A 上的触发器引用 Table_B,并且没有指定 Table_B 的所有者,那么,Table_B 就必须已经由 user_1 创建,或者,user_1 必须(直接或间接地)是作为 Table_B 的所有者的某个组的成员。如果这两个条件都不具备,该触发器触发时将出现消息 [没有找到表]。
此外,user_1 必须具有执行该触发器中指定的表的操作的权限。
所以我们需要b用户给a用户‘table_B’表的操作权限.(如果在a用户的‘table_A’表上的触发器中有对b用户‘table_B’表进行增、删、改的操作,那么就需要b用户给a用户‘table_B’表的增、删、改操作权限).
权限: SELECT(读), INSERT(追加), UPDATE(写),DELETE GRANT 权限 ON 表名 TO 用户名;

注意:用这条语句的用户必须是表的所有者.
比如上面表Table_A用户是 user_1  ,表Table_B用户是 user_2
则需要登录 user_2 然后GRANT 权限 ON Table_B TO user_1 ;

不在同一用户的表,另一用户要访问,必须赋予权限:

GRANT insert,select,delete ON sda_user.a_result_base TO swda_dev;


create or replace TRIGGER a_result_base_triger
AFTER INSERT OR UPDATE OR DELETE
ON swda_dev.a_result_base
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
   INSERT INTO SDA_USER.a_result_base(CONDITION_ID,DATA_DT,FREQUENCY_CD,INDEX_CD,INDEX_VALUE,APP_KEY)
   VALUES(:NEW.CONDITION_ID,:NEW.DATA_DT,:NEW.FREQUENCY_CD,:NEW.INDEX_CD,:NEW.INDEX_VALUE,:NEW.APP_KEY);
   ELSIF DELETING THEN
   DELETE FROM SDA_USER.a_result_base WHERE APP_KEY=:OLD.APP_KEY and INDEX_CD=:OLD.INDEX_CD and DATA_DT=:OLD.DATA_DT;
   END IF;
END  a_result_base_triger;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22569416/viewspace-2083504/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22569416/viewspace-2083504/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值