Oracle 10g проблема с триггером - PullRequest
0 голосов
/ 26 февраля 2011

это моя первая попытка использования Oracle. Я хотел бы использовать внешний ключ.

Сначала я создаю таблицу с идентификатором автоинкремента:

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
)

Я пытаюсь создать тот же триггер автоинкремента для студента:

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 Ответ

1 голос
/ 26 февраля 2011

Обязательно исключите все опечатки имен идентификаторов, похоже, у вас есть неправильные символы в ваших идентификаторах:

create sequence stundenti_tab_seq ("n" слишком много)

select studenti_tab_seq.nextval into :new.studnetid from dual; (имя последовательности не совпадает, new.studnetid неверно)

...