给你写了一个: 你把a 和col1换成你的表和列就可以了 CREATE OR REPLACE TRIGGER GDXB_TRIGGER BEFORE INSERT ON a for each row declare maxbh number(10); begin select max(col1) into maxbh from a; :new.col1 := maxbh + 1; end; /
CREATE OR REPLACE TRIGGER GDXB_TRIGGERd BEFORE INSERT ON GDXB declare maxbh number(10); begin select max(bh) into maxbh from gdxb; new.bh := maxbh + 1; end; / 改过来了,可还是不行。 (注: 我用的是Oracle 8.05的版本) 还是原来的错误: 警告:已创建的触发程序出现编译错误!
先提出一个明显错误,对于触发器体内不能再次对触发表再次触发。 这样吧,用一个函数来代替代。 create or replace function getmax return number as v_max number; begin select max(bh) into v_max from GDXB; return v_max; end; /CREATE OR REPLACE TRIGGER GDXB_TRIGGERd BEFORE INSERT ON GDXB begin :new.bh :=getmax + 1; end; /
你把a 和col1换成你的表和列就可以了
CREATE OR REPLACE TRIGGER GDXB_TRIGGER
BEFORE INSERT ON a
for each row
declare
maxbh number(10);
begin
select max(col1) into maxbh from a;
:new.col1 := maxbh + 1;
end;
/
BEFORE INSERT ON GDXB
declare
maxbh number(10);
begin
select max(bh) into maxbh from gdxb;
new.bh := maxbh + 1;
end;
/
改过来了,可还是不行。 (注: 我用的是Oracle 8.05的版本)
还是原来的错误: 警告:已创建的触发程序出现编译错误!
这样吧,用一个函数来代替代。
create or replace function getmax
return number
as
v_max number;
begin
select max(bh) into v_max from GDXB;
return v_max;
end;
/CREATE OR REPLACE TRIGGER GDXB_TRIGGERd
BEFORE INSERT ON GDXB
begin
:new.bh :=getmax + 1;
end;
/