我创建一个startup触发器,就是不执行,谁能帮帮俺呀,俺都快疯了。create table test (a varchar2(50));create or replace trigger Tri_temp after STARTUP on database
begin
 Insert into test (a) values ('OK');
 commit;
end Tri_temp;
/

解决方案 »

  1.   

    测试环境:
    oracle 817
    win2000 serverSQL> create or replace trigger TrG_temp after STARTUP on database
      2  begin
      3   Insert into SCOTT.t values (SYSDATE,1);
      4  end Tri_temp;
      5  /触发器已创建已用时间:  00: 00: 00.70
    SQL> CONN SCOTT/TIGER
    已连接。
    SQL> SELECT * FROM T;未选定行已用时间:  00: 00: 00.30
    SQL> CONN INTERNAL/ORACLE
    已连接。
    SQL> SHUTDOWN IMMEDIATE
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> STARTUP
    ORACLE 例程已经启动。Total System Global Area   18528284 bytes
    Fixed Size                    75804 bytes
    Variable Size              17555456 bytes
    Database Buffers             819200 bytes
    Redo Buffers                  77824 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL> select * from scott.t;AAA               BBB
    ---------- ----------
    26-8?  -05          1已用时间:  00: 00: 00.20
    SQL> select to_char(aaa,'yyyy-mm-dd hh24:mi:ss'),bbb from scott.t;TO_CHAR(AAA,'YYYY-M        BBB
    ------------------- ----------
    2005-08-26 08:14:43          1已用时间:  00: 00: 00.30
    SQL> 没有问题。
      

  2.   

    1、Insert into test (a) values ('OK');这句表名前面加上schema名称或建立public同义词
    2、这张表其它用户要有insert的权限和该表所属表空间的使用权限
      

  3.   

    谢谢,我搞定了。是因为写了Commit的缘故。
    create or replace trigger Tri_temp after STARTUP on database
    begin
     Insert into test (a) values ('OK');
    -- commit; --去掉COMMIT就没问题了,真TMD。
    end Tri_temp;
    /马上解贴,接分。