我试图创建一个触发器并收到错误" [错误] PLS-00357:PLS-00357:表,视图或序列参考' table_data_seq.nextval'在此背景下不允许"
我已经阅读了很多关于错误的信息,但是找不到人们说的和我的PL / SQL之间的区别。下面是我创建触发器的代码(尽可能使其保持基本运行状态):
create or replace trigger tr_tabData
before insert on table_data
for each row
DECLARE
seq_value int;
begin
select table_data_sq.nextval into seq_value from dual;
end;
Oracle版本是10.2.0.5
按照此处的要求,序列的脚本为:
DROP SEQUENCE DATA_ADMIN.TABLE_DATA_SQ;
CREATE SEQUENCE DATA_ADMIN.TABLE_DATA_SQ
START WITH 1000
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER;
答案 0 :(得分:3)
在11g之前这是不可能的。您可以在11g之前的常规作业中使用sequence_name.NEXTVAL,以及以下内容:
select TABLE_DATA_SQ.NEXTVAL into :NEW.YourID from dual;
答案 1 :(得分:0)
事实证明,这是TOAD版本和我的Oracle数据库版本的错误。 SQL * Plus和SQL Developer中的相同代码按预期工作。