警告:使用编译错误创建的触发器没有显示任何错误



我创建了一个表tr_startup_audit

然后我创建了一个触发器:

create or replace trigger tr_startup_audit
after startup on database
begin
insert into startup_audit values(
ora_sysevent,
sysdate,
TO_CHAR(sysdate, 'hh24:mm:ss'));
end;
/

当我编译它时,它显示

"警告:创建触发器时出现编译错误">

当我执行show err命令时,它显示

"没有错误";

我哪里错了?

对我来说没问题:

SQL> create table startup_audit (event varchar2(30), datum date, sat varchar2(10));
Table created.
SQL> create or replace trigger tr_startup_audit
2  after startup on database
3  begin
4  insert into startup_audit values(
5  ora_sysevent,
6  sysdate,
7  TO_CHAR(sysdate, 'hh24:mm:ss'));
8  end;
9  /
Trigger created.
SQL>

但是

  • 为什么要单独存储时间组件?DATE数据类型(也意味着SYSDATE函数,因为它返回DATE(,包含日期和时间

    SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
    Session altered.
    SQL> select sysdate from dual;
    SYSDATE
    -------------------
    06.07.2021 08:28:56
    

    因此,您可以省略第7行,只存储sysdate(第6行(。

    当然,这意味着您也应该重新定义startup_audit表,并删除您现在用于存储"的列;无效";时间为什么它无效?继续阅读。

  • 您在to_char中使用的格式掩码错误。mm用于个月,而mi用于minute

相关内容

  • 没有找到相关文章

最新更新