为什么我得到 PLS-00049:Apex 中的绑定变量错误
Why I get PLS-00049: bad bind variable in Apex
我正在尝试为 table 电影 自动生成 PK 值,但在创建触发器时出现此错误
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 table
中肯定有 MOVIE_ID 列
您当前的问题与您专栏的 (MOVIE_ID
) 在 table 中的定义有关,正如已经指出的那样,应该引用 ("MOVIE_ID"
) 作为 Lukasz。
您的数据库版本应该是 12+
,因为 CREATE SEQUENCE
的 NOKEEP
选项直到 12c
.
才存在
在 Oracle DB
版本 12c
中,序列的下一个值可能被设置为列
的默认值
(不需要触发器) :
alter table "Movie" modify "MOVIE_ID" default "MOVIE_PK_SEQ".nextval not null
如果 table 尚未创建,您可以这样做:
create table "Movie"
(
"MOVIE_ID" int generated always as identity,
...
无需您创建单独的序列(Oracle 为您完成)
我正在尝试为 table 电影 自动生成 PK 值,但在创建触发器时出现此错误
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 table
中肯定有 MOVIE_ID 列您当前的问题与您专栏的 (MOVIE_ID
) 在 table 中的定义有关,正如已经指出的那样,应该引用 ("MOVIE_ID"
) 作为 Lukasz。
您的数据库版本应该是 12+
,因为 CREATE SEQUENCE
的 NOKEEP
选项直到 12c
.
在 Oracle DB
版本 12c
中,序列的下一个值可能被设置为列
(不需要触发器) :
alter table "Movie" modify "MOVIE_ID" default "MOVIE_PK_SEQ".nextval not null
如果 table 尚未创建,您可以这样做:
create table "Movie"
(
"MOVIE_ID" int generated always as identity,
...
无需您创建单独的序列(Oracle 为您完成)