以下是在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: 权限不足
那位大侠帮忙解决一下啊?
----------------------------------------------------------------
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: 权限不足
那位大侠帮忙解决一下啊?
grant create trigger to 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得同样的结果。恳请大侠们继续指点。
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后触发器创建成功。最后还是要感谢楼上几位同仁的指点!