create table emp_log
(
uname varchar2(20),
action varchar2(10),
atime date
);create or replace trigger trig
   after insert or delete or update on emp for each row
begin
    if inserting then
       insert into emp_log values (USER,'insert',sysdate);
    elsif updating then
       insert into emp_log values (USER,'update',sysdate);
    elsif deleting then
       insert into emp_log values (USER,'delete',to_char(sysdate, 'YYYY_MM_DD HH24:MI:SS'));
    end if;
end;运行显示有错误, delete的时候我想显式时间:时,分,秒的
不知道怎么处理时间。

解决方案 »

  1.   

    汗..你将字符型数据保存到date型字段里,当然要错了
      

  2.   

    查询的时候再format转换
    插入的时候就用sysdate
      

  3.   

    改了'YYYY-MM-DD HH24:MI:SS'后还是不对啊提示:SQL> delete from emp where deptno = 10;
    delete from emp where deptno = 10
                *
    第 1 行出现错误:
    ORA-01861: 文字与格式字符串不匹配
    ORA-06512: 在 "SCOTT.TRIG", line 7
    ORA-04088: 触发器 'SCOTT.TRIG' 执行过程中出错
      

  4.   

    你就SYSDATE就行了啊,DATE类型的不能把VARCHAR格式的存进去的
    DATE类型的本身就是到毫秒的
    只要输出显示时控制下显示格式就行了
    楼主这些基础知识有待加强
      

  5.   

    日志文件的时间显示现在是什么样子,先换成正确的sysdate查看下