运行如下代码,结果在最后一句报错! 
sql>create table articletype(id number primary key,name varchar2(30)); 
sql>create sequence seq_aritcle_id increment by 1 start with 1 maxvalue 999999999; 
sql>create trigger trg_articletype_id 
    before insert 
    on articletype 
    for each row 
    begin 
    select seq_articletype_id.nextval into :new.id 
    from dual; 
    end; 
    / 
警告: 创建的触发器带有编译错误 这是什么原因啊,如何修改?谢谢了! 

解决方案 »

  1.   

    前面两句就已经创建了自增长的列,使用的时候直接
    insert into articletype values(seq_articletype_id.nextval,..... 就可以了。为什么还需要这样一个触发器?
      

  2.   


    我想直接在数据库增加一个触发器,而在接入字段时不给值给自增列就可以了,和sql server类似!
      

  3.   


    create or replace trigger trg_articletype_id 
        before insert 
        on articletype 
        for each row 
    declare
        next_id number;
        begin 
        select seq_aritcle_id.nextval into next_id from dual; 
        :new.id:=next_id;
        end;你的sequence使用的时候名字!!!
      

  4.   

    2楼没理解什么叫自增
    create or replace trigger trg_articletype_id 
        before 操作 
        on 表名 
        for each row 
    declare 
        id number; 
        begin 
        select 序列名.nextval into id from dual; 
        :new.id :=id; 
        end; 
    警告: 创建的触发器带有编译错误 
    你在定义的时候操作是insert 但是在下面的过程中你insert了么????