我创建了一个让主键自动增长的trigger:create or replace trigger trg_userid_inc
before insert on users referencing new as newid
for each row
begin
newid.userid := seq_userid_inc.nextval;
end;运行以后老说“创建的触发器带有编译错误”。为什么?

解决方案 »

  1.   

    语法有错:
    :newid.userid := seq_userid_inc.nextval;
      

  2.   

    14:24:05 jlanzpa817>create or replace trigger trg_userid_inc
    14:24:26   2  before insert on users referencing new as newid
    14:24:26   3  for each row
    14:24:26   4  declare
    14:24:26   5  tmp number;
    14:24:26   6  begin
    14:24:26   7  select seq_userid_inc.nextval into tmp from dual;
    14:24:26   8  :newid.userid := tmp;
    14:24:26   9  end;
    14:24:26  10  /触发器已创建已用时间:  00: 00: 00.31
      

  3.   

    是不是这样
    :new.userid := seq_userid_inc.nextval;
      

  4.   

    14:24:03 jlanzpa817>sho err
    TRIGGER TRG_USERID_INC 出现错误:LINE/COL ERROR
    -------- ------------------------------------------------
    4/1      PL/SQL: Statement ignored
    4/23     PLS-00357: 在此上下文中不允许表,视图或序列引用
             'SEQ_USERID_INC.NEXTVAL'先赋给一个变量即可.
      

  5.   

    SP2-0552: 未说明结合变量"NEWID" 
    ?
      

  6.   

    楼主的为何要替代呢, 是多此一举吧create or replace trigger trg_userid_inc
    before insert on users 
    for each row
    begin
    :new.userid := seq_userid_inc.nextval;
    end;要注明,你的userid类型和大小是否能满足