以下是在SQL * plus里面的输出:SQL> select * from v$version;BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - ProductionSQL> show user;
USER 为"VM_USER"
SQL> select table_name, privilege from user_tab_privs;TABLE_NAME                     PRIVILEGE
------------------------------ ----------------------------------------
SITE                           ALTER
SITE                           DELETE
SITE                           INDEX
SITE                           INSERT
SITE                           SELECT
SITE                           UPDATE
SITE                           REFERENCES
SITE                           ON COMMIT REFRESH
SITE                           QUERY REWRITE
SITE                           DEBUG
SITE                           FLASHBACK已选择11行。SQL> create or replace trigger trig_insertSitePosition
  2  after insert
  3  on site
  4  for each row
  5  begin
  6  insert into sitepostion(siteid) values(:new.siteid);
  7  end;
  8  /
on site
   *
ERROR 位于第 3 行:
ORA-01031: 权限不足
那位大侠帮忙解决一下啊?

解决方案 »

  1.   

    grant create trigger to vm_user
      

  2.   

    实在不行,加一个create any trigger to vm_user吧
      

  3.   

    把权限加上去看看呢.
    grant create trigger to vm_user
      

  4.   

    我用system用户登录后,grant create trigger to vm_user ,成功。然后再用vm_user登录,输出如下:
    SQL> connect vm_user/qqq@police;
    Connected.
    SQL> ed
    Wrote file afiedt.buf  1  create or replace trigger trig_insertSitePosition
      2  after insert
      3  on site
      4  for each row
      5  begin
      6  insert into sitepostion(siteid) values(:new.siteid);
      7* end;
    SQL> /Warning: Trigger created with compilation errors.SQL> show errors;
    Errors for TRIGGER TRIG_INSERTSITEPOSITION:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    2/1      PL/SQL: SQL Statement ignored
    2/13     PL/SQL: ORA-00942: 表或视图不存在SQL> desc site;
     Name                           
     ------------------------
     SITEID                         
     SITENAME                       
     SITETYPE                       
     OWNER                          
     LINKMAN                        
     MOBILE                         
     PHONE                          
     FAX                            
     EMAIL                          
     ADDRESS                        
     ZIP                            
     SQUARE                         
     AREAID                         
     POLICEID                       
     PEACEMAN                       
     PEACEPHONE                     
     NOTE                           
     IP                             
     DN                             
     CAMERACOUNT                    SQL> 但是表site确实存在呀? 用grant create trigger to vm_user得同样的结果。恳请大侠们继续指点。
      

  5.   

    grant all on sitepostion to vm_user
      

  6.   

    试了cenlmmx(学海无涯苦作舟)所说的,还是不行啊,到底是什么原因呢?
      

  7.   

    问题解决了,其实是我自己不小心把表名sitepostion错写成了sitepostion,因此oracle报如下错误:
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    2/1      PL/SQL: SQL Statement ignored
    2/13     PL/SQL: ORA-00942: 表或视图不存在
    值得注意的是这里的第二行并不是指我写的trigger源代码的第二行,而是创建的trigger(即使有错trigger还是会被创建)的trigger_body的第二行,用以下命令可以看到:
    select trigger_body from user_triggers where trigger_name='TRIG_INSERTSITEPOSITION';TRIGGER_BODY
    --------------------------------------------------------------------------------
    begin
    insert into sitepostion(siteid) values(:new.siteid);
    end;
    已选择 1 行。所以2行第13列正式表名sitepostion的第一个字母,把它改成siteposition后触发器创建成功。最后还是要感谢楼上几位同仁的指点!