INSERT INTO tb_counter(DATETIME) values
                (select to_char(sysdate,'yyyy-mm-dd') from dual);--------------------------INSERT INTO tb_counter(DATETIME) values
                (to_char(sysdate,'yyyy-mm-dd'));

解决方案 »

  1.   

    create trigger TG_DATETIME_GEN
    BEFORE INSERT
    ON tb_counter
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
    INSERT INTO tb_counter(DATETIME) select to_char(sysdate,'yyyy-mm-dd') from dual; --changed
    END;或者
    create trigger TG_DATETIME_GEN
    BEFORE INSERT
    ON tb_counter
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
    INSERT INTO tb_counter(DATETIME) values (to_char(sysdate,'yyyy-mm-dd') );    --changed
    END;
      

  2.   

    创建了触发器,可是添加数据的时候出现ORA-04098触发器“SYSTEM.TG_DATETIME_GEN”无效且未通过重新确认。请问这是怎么回事?
      

  3.   

    你的触发器构成了直接递归,可以利用视图避免这个错误--创建试图
    create or replace view v
    as
    select * from tb_counter;--创建触发器
    create or replace trigger tr
    instead of insert
    on v
    for each row
    begin
          insert into tb_counter values(字段列表);
          update tb_counter set "DATETIME"=sysdate where 主键=:new.主键;
    end;