Oracle 为什么我得到PLS-00049:Apex中的坏绑定变量

Oracle 为什么我得到PLS-00049:Apex中的坏绑定变量,oracle,sequence,Oracle,Sequence,我试图自动生成表电影的主键值,但在创建触发器时出现此错误 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 '

我试图自动生成表电影的主键值,但在创建触发器时出现此错误

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表中肯定有列MOVIE\u ID,您当前的问题与表中列的(
MOVIE\u ID
)定义有关,正如卢卡斯指出的,应该引用(
“MOVIE\u ID”

您的DB版本应该是
12+
,因为
CREATE SEQUENCE
NOKEEP
选项在
12c
之前不存在

在Oracle DB的
version
12c
中,序列的下一个值可能被设置为列的默认值

(不需要触发器):

如果尚未创建表,则可以执行以下操作:

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

不需要您创建单独的序列(Oracle为您这样做)

您当前的问题与表中列的(
MOVIE\u ID
)定义相关,正如卢卡斯指出的,应该引用该定义(
“MOVIE\u ID”

您的DB版本应该是
12+
,因为
CREATE SEQUENCE
NOKEEP
选项在
12c
之前不存在

在Oracle DB的
version
12c
中,序列的下一个值可能被设置为列的默认值

(不需要触发器):

如果尚未创建表,则可以执行以下操作:

create table "Movie"
(
  "MOVIE_ID"  int generated always as identity,
  ...
无需您创建单独的序列(Oracle为您这样做)

:new.“MOVIE\u ID”:=“MOVIE\u PK\u SEQ”.nextval
:新的“电影ID”:=“电影PK SEQ”。下一步