带有触发器的Oracle 10g问题

时间:2011-02-26 19:51:45

标签: triggers oracle10g

这是我第一次尝试使用Oracle我想使用外键。

首先我创建一些带有自动增量ID的表:

create table kruzky_tab(
  kruzokid number primary key  not null,
  meno  varchar2(50) not null,
  pocet number not null
)

create sequence kruzky_tab_seq 
  start with 1 
  increment by 1 
  nomaxvalue; 

create trigger kruzky_tab_trigger
  before insert on kruzky_tab
  for each row
    begin
      select kruzky_tab_seq.nextval into :new.kruzokid from dual;
    end;

然后我在上面的表上用外键创建第二个表:

create table studenti_tab(
  studentid number primary key not null,
  meno varchar2(50) not null,
  priezvisko varchar2(50) not null,
  email varchar2(50) not null,
  kruzokid references kruzky_tab
)

我尝试为studentid创建相同的自动增量触发器:

create sequence stundenti_tab_seq
  start with 1
  increment by 1
  nomaxvalue

create trigger studenti_tab_trigger
  before insert on studenti_tab
  for each row
    begin
      select studenti_tab_seq.nextval into :new.studnetid from dual;
    end;

我收到此错误:

  

第2行的错误:PLS-00049:错误的绑定变量'NEW.STUDNETID'

1. create trigger `studenti_tab_trigger`
2. before insert on `studenti_tab`
3. for each row
4. begin

触发器与顶部的kruzky_tab表中的触发器具有相同的逻辑。 有什么不好?感谢。

1 个答案:

答案 0 :(得分:1)

请务必排除标识符名称的所有拼写错误,看起来您的标识符中有一些错误的字符:

create sequence stundenti_tab_seq(“过多”)

select studenti_tab_seq.nextval into :new.studnetid from dual;(序列名称不匹配,new.studnetid错误)