我发现我把begin .... end之间的代码全部注释掉,编译还是出现下面错误,不提示具体错误,只是一句“警告: 创建的触发器带有编译错误。”

解决方案 »

  1.   

    create or replace trigger kbmanager.my_trigger
    错误肯定出现在这一句上。kbmanager取掉
      

  2.   

    我发现了两个问题:
    1、info char(10)后边少了一个分号
    2、你的程序体即begin和end之间一条语句也没有。
    试试改成这样:
    create or replace trigger kbmanager.my_trigger
    after insert or update or delete on kbmanager.persons
    for each row
    declare
    info char(10); --添加一个分号
    begin
    /*if inserting then
      info:='insert';
      elsif updating then
      info:='update';
      else
      info:='delete';
      end if;*/
      --insert into test1(fid,fname,FDate)values('aaa','aaa',sysdate);
    null; --增加一条可执行的语句
    end;
    执行后若还提示错误,请用show error命令将具体的错误显示出来
      

  3.   

    to: kmwy(追而不求):
    按你的改法,我成功了,谢谢
    但我还有一个也帮我看看,看看哪错,编译还是和上面一样的提示,过不去create or replace trigger kbmanager.testperson
    after insert or update on kbmanager.persons
    for each row
    declare
    info char(10); --添加一个分号
    begin
      if new.FLevel = '1' then--我的意思是如果插入或更新的记录的FLevel字段值是'1',我想向另一表插入相关数据
       insert into kbmanager.test1(fid,fname)values('aaa','aaa');
      else
       null;
    end;
      

  4.   

    create or replace trigger kbmanager.testperson
    after insert or update on kbmanager.persons
    for each row
    declare
    info char(10); --添加一个分号
    begin
      if :new.name = '1' then--我的意思是如果插入或更新的记录的FLevel字段值是'1',我想向另一表插入相关数据
       insert into kbmanager.test1(fid,fname)values('aaa','aaa');
      else
       null;
      end if;--应加这一句就行了
    end;