我现在有2个用户。 一个CDE 一个OPR  。客户要求我在CDE在创建triiger那么 opr用户下能使用这个触发器吗。 不太懂oracle,请各位指导,谢谢

解决方案 »

  1.   

    这算是标准吧。 我们的数据库共有3个用户 、好像是4个 另一个忘记做什么的用到额了。
    一个是DATA 相当于DBA的权限。 一个OPR就是开发者 一个是CDE 就是相关环境的 表都建在DATA下 所以脚本还要建同义词, 赋权给OPR 能够使用。
    CDE下是就建序列、索引、 和触发器、存储过程的。
    opr 就是我们系统上线后使用的的用户。 
    这样建有利于数据库管理员,控制好权限,应该是安全级别高点吧。
      

  2.   

    不是对trigger授权,是把有trigger的表的操作权限授权给相应用户.trigger是依附在表上的.类似皮和毛的关系.
      

  3.   

    grant execute opr.触发名 to CDE
      

  4.   

    --只需有对触发器上触发对象(这里是你的表)有权限操作就可以了grant to insert,delete,update on 触发的表 to opr
      

  5.   

    倒,被你忽悠了,试了下不成的.
    SQL> grant execute scott.check_client  to sys;
     
    grant execute scott.check_client  to sys
     
    ORA-00990: missing or invalid privilege
     
    SQL> 
      

  6.   


    --一个简单的例子,你自己看下
    SQL> desc test;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     A                                                  NUMBER(20)
     B                                                  NUMBER(20)SQL> create table test2 as select * from test where 1<>1
      2  /表已创建。SQL> grant insert,delete,update on test to wkc168
      2  /授权成功。SQL> edi
    已写入 file afiedt.buf  1* grant insert,delete,update on test2 to wkc168
    SQL> /授权成功。
    SQL> create or replace trigger tri_test before insert or delete or update on test for each row
      2  begin
      3  insert into test2 values(:new.a,:new.b);
      4  end;
      5  /触发器已创建SQL> edi
    已写入 file afiedt.buf  1* insert into scott.test values(168,28)
    SQL> /已创建 1 行。SQL> commit
      2  /提交完成。SQL> select * from scott.test2;         A          B
    ---------- ----------
           168         28
      

  7.   


    --一个简单的例子,你自己看下,贴全了
    SQL> desc test;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     A                                                  NUMBER(20)
     B                                                  NUMBER(20)SQL> create table test2 as select * from test where 1<>1
      2  /表已创建。SQL> grant insert,delete,update on test to wkc168
      2  /授权成功。SQL> edi
    已写入 file afiedt.buf  1* grant insert,delete,update on test2 to wkc168
    SQL> /授权成功。
    SQL> create or replace trigger tri_test before insert or delete or update on test for each row
      2  begin
      3  insert into test2 values(:new.a,:new.b);
      4  end;
      5  /触发器已创建SQL> conn wkc168/sys
    已连接。SQL> edi
    已写入 file afiedt.buf  1* insert into scott.test values(168,28)
    SQL> /已创建 1 行。SQL> commit
      2  /提交完成。SQL> select * from scott.test2;         A          B
    ---------- ----------
           168         28