SQL> create or replace trigger a_trigger after
  2  insert or update or delete 
  3  on A
  4  for each row
  5  declare
  6  l_action char(1);
  7  begin
  8  if :new.aid <> :old.aid
  9  then
 10  dbms_output.put_line('error');
 11  end if;
 12  if inserting
 13  then 
 14  l_action :='I';
 15  elsif updating
 16  then
 17  l_action :='U';
 18  elsif deleting
 19  then
 20  l_action :='D';
 21  end if;
 22  insert into AT values(:new.aid,l_action, sysdate,user,:new.f,:old.f,:old.isbn,:new.f,:new.isbn)
;
 23  end;
 24  /警告: 创建的触发器带有编译错误。SQL> show error
TRIGGER A_TRIGGER 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------
18/1     PL/SQL: SQL Statement ignored
18/13    PL/SQL: ORA-00913: 值过多
请大侠帮忙,谢谢了,

解决方案 »

  1.   

    你在左边的树中找到你的触发器 右键查看 右下角会有错误提示 你选中的话 会定位到某一行的 你试试
    我感觉是你的这句话insert into AT values(:new.aid,l_action, sysdate,user,:new.f,:old.f,:old.isbn,:new.f,:new.isbn)
    有问题
    AT表中有几列啊 是不是字段没对应上?
    还有 不建议用 insert into table values()这种形式
    最好把字段列出来 insert into table (col)values(colvalue)
      

  2.   

    应该是insert的语句的问题,把insert语句注释掉试试。