我有一个'after create on database'触发器,可以在特定模式中为新创建的表提供对不同Oracle角色的select访问 .
如果我执行一个 create table ... as select 语句然后在TOAD中的同一代码块或不同的UI中查询新表我遇到错误,但是如果我单独运行命令它会起作用:
create table schema1.table1 as select * from schema2.table2 where rownum < 2;
select count(*) from schema1.table1;
如果我将它们作为一个代码块执行,我得到:
ORA-01031: insufficient privileges
如果我单独执行它们,我不会收到错误并且能够获得正确的计数 .
AFTER CREATE触发器的示例片段
CREATE OR REPLACE TRIGGER TGR_DATABASE_AUDIT AFTER
CREATE OR DROP OR ALTER ON Database
DECLARE
vOS_User VARCHAR2(30);
vTerminal VARCHAR2(30);
vMachine VARCHAR2(30);
vSession_User VARCHAR2(30);
vSession_Id INTEGER;
l_jobno NUMBER;
BEGIN
SELECT sys_context('USERENV', 'SESSIONID'),
sys_context('USERENV', 'OS_USER'),
sys