create or replace trigger calendar_trg
  before insert  on calendar
  for each row
  begin
      select S_calendar.nextval into :new.id from dual;
    end;警告:创建的触发器带有编译错误.请高手帮我看看,我刚开始学.

解决方案 »

  1.   

    SQL> 
    SQL> create sequence S_calendar
      2  minvalue 1
      3  maxvalue 9999999999
      4  start with 1
      5  increment by 1
      6  cache 20
      7  order;Sequence createdSQL> create table calendar(id number, name varchar2(10));Table createdSQL> 
    SQL> create or replace trigger calendar_trg
      2  before insert on calendar
      3  for each row
      4  begin
      5  select S_calendar.nextval into :new.id from dual;
      6  end;
      7  /Trigger createdSQL> insert into calendar(name) values('test');1 row insertedSQL> select * from calendar;        ID NAME
    ---------- ----------
             1 test
      

  2.   

    有人帮帮我吗?
    表calendar在Oracle创建成功的.序列S_calendar也已经创建成功;
    表中带有增量的字段名为id;
    就是创建触发器时出现上面的错误.什么问题啊?
      

  3.   

    没有问题啊,触发器很正确
    楼主检查一下是不是sequence没有创建
      

  4.   

    或者出现错误以后
    show error
    看看是什么错误