就是一个insert触发器,比如有一个表有三个字段 one two three
其中 one 这个字段的值在插入的时候可能出现不是我想要的值,
但是我有一个表可以对它进行参照转换,比如这个表就叫cankao,
这个表可以通过one去找对应的我实际要改的值,比如one 是1的话 在这个表里面对应的是5
那么one的值就要相应的替换为5,如果找不到的话那么one的值就还是one本身的值
希望大家帮忙,非常感谢了
其中 one 这个字段的值在插入的时候可能出现不是我想要的值,
但是我有一个表可以对它进行参照转换,比如这个表就叫cankao,
这个表可以通过one去找对应的我实际要改的值,比如one 是1的话 在这个表里面对应的是5
那么one的值就要相应的替换为5,如果找不到的话那么one的值就还是one本身的值
希望大家帮忙,非常感谢了
SQL> create table t1(one int,two int,three int);Table createdSQL> create table cankao(idx int,code int);Table createdSQL> insert into cankao select 1,5 from dual;1 row insertedSQL> select * from cankao; IDX CODE
--------------------------------------- ---------------------------------------
1 5SQL> create or replace trigger test_trigger
2 before insert on t1 for each row
3 declare
4 value1 int;
5 begin
6 select code into value1 from cankao where idx = :new.one;
7 :new.one := value1;
8 end;
9 /Trigger createdSQL> insert into t1 select 1,2,3 from dual;1 row insertedSQL> select * from t1; ONE TWO THREE
--------------------------------------- --------------------------------------- ---------------------------------------
5 2 3
create or replace trigger test_trigger
before insert on t1 for each row
declare
value1 int;
begin
begin
select code into value1 from cankao where idx = :new.one;
exception
when NO_DATA_FOUND then
value1 := :new.one;
end;
:new.one := value1;
end;
/
create or replace trigger test_trigger
before insert on t1 for each row
declare
value1 int;
intnum int;
begin
select count(*) into intnum from cankao where idx = :new.one;
if intnum = 1
then
select code into value1 from cankao where idx = :new.one;
else
value1 := :new.one;
end if;
:new.one := value1;
end;
/