Почему я получаю PLS-00049: неверная переменная связывания в Apex - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь автоматически сгенерировать значения PK для таблицы Movie , но получаю эту ошибку при создании триггера

Compilation failed, line 2 (10:45:07) The line numbers associated with compilation errors 
are relative to the first BEGIN statement. This only affects the compilation of database 
triggers.
PLS-00049: bad bind variable 'NEW.MOVIE_ID' 

Это код триггера

create or replace trigger "MOVIE_T1"
BEFORE
insert on "Movie"
for each row
begin
    :new.MOVIE_ID := MOVIE_PK_SEQ.nextval;
end;

Это код последовательности

CREATE SEQUENCE   "MOVIE_PK_SEQ"  
MINVALUE 1 MAXVALUE 999999 
INCREMENT BY 1 START WITH 1 
NOCACHE  NOORDER  NOCYCLE  NOKEEP  NOSCALE  GLOBAL

У меня определенно есть столбец MOVIE_ID в моей MOVIE таблице

1 Ответ

2 голосов
/ 19 октября 2019

Ваша текущая проблема связана с определением вашего столбца (MOVIE_ID) в таблице, которое должно быть заключено в кавычки ("MOVIE_ID") как Lukasz, как уже указывалось.

Ваша версия БД должна быть 12+, поскольку NOKEEP опция для CREATE SEQUENCE не существует до 12c.

В Oracle DB версии 12c, следующее значение последовательности может быть установлено по умолчанию для столбца

( Триггер не нужен ):

alter table "Movie" modify "MOVIE_ID" default "MOVIE_PK_SEQ".nextval not null

, если таблица еще не была создана, вы можете сделать:

create table "Movie"
(
  "MOVIE_ID"  int generated always as identity,
  ...

без необходимостисоздание вами отдельной последовательности (Oracle сделает это за вас)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...