小弟最近刚接触Oracle,写触发器的时候遇到了一个问题。我要在插入一行数据的时候,把将要插入的数据中的一个字段(bbid),修改为指定的id。下面是我写的触发器
CREATE OR REPLACE TRIGGER
"SBGIS"."ELECLINE_10KVBROWSE_ADD" BEFORE
INSERT ON "SBGIS"."ELECLINE_10KVBROWSE" FOR EACH ROW declare
maxid int;
begin
SELECT MAX(bbid) into maxid FROM Elecline_10kvBrowse;
IF(maxid<100 or maxid IS NULL ) then
maxid := 100;
END IF;
:new.bbid := maxid+1;
end ELECLINE_10KVBROWSE_ADD;但是编译的时候系统总是提示“索引中丢失in或out参数”,后来我发现只要触发器中使用了“:new”就会提示这个错误。诸位大虾,哪位知道是怎么回事? 应该怎么解决?多谢了!
CREATE OR REPLACE TRIGGER
"SBGIS"."ELECLINE_10KVBROWSE_ADD" BEFORE
INSERT ON "SBGIS"."ELECLINE_10KVBROWSE" FOR EACH ROW declare
maxid int;
begin
SELECT MAX(bbid) into maxid FROM Elecline_10kvBrowse;
IF(maxid<100 or maxid IS NULL ) then
maxid := 100;
END IF;
:new.bbid := maxid+1;
end ELECLINE_10KVBROWSE_ADD;但是编译的时候系统总是提示“索引中丢失in或out参数”,后来我发现只要触发器中使用了“:new”就会提示这个错误。诸位大虾,哪位知道是怎么回事? 应该怎么解决?多谢了!
create or replace trigger tri_t
before insert on tuner.t for each row
declare
maxid integer;
begin
select max(id) into maxid from t;
if (maxid<100 or maxid is null )then
maxid:=100;
end if ;
:new.id:=maxid+1;
end;
SQL> insert into t values(1);已创建 1 行。SQL> select * from t; ID
----------
101SQL>
SQL>
SQL> commit;提交完成。SQL>
SQL> create index idx_t on t(id);索引已创建。SQL>
SQL>
SQL> insert into t values(1);已创建 1 行。SQL> select *from t; ID
----------
101
102SQL>与trigger无关,检查你下的表吧,