有关oracle替代触发器的问题

时间:2020-12-11 05:01:13
替代触发器是如何定义的? 
向视图插入时,是根据条件,从一个表取连接列的值复给另一个表,整个记录的值又是如何插入的呢?

8 个解决方案

#1


create view myview(col1,col2)
as
select a.col1,b.col2  from a,b where a.col1=b.col1

---------------
插入的时候
insert into myview(col1,col2) values('001','zhangsan');

#2


create view myview(col1,col2)
as
select a.col1,b.col2  from a,b where a.col1=b.col1

create trigger a_bInsert instead of insert on myview
declare
v_col a.col1%type;
begin
----col1 能唯一标示 a 的一列
select col1 into v_col from a where col1 = :new.col1;
update b set col1=v_col where col2 = :new.col2;
end;

建立完替代触发器后可以插入试图
---------------
插入的时候
insert into myview(col1,col2) values('001','zhangsan');

#3


在这里,你update b set col1=v_col where col2 = :new.col2;
它是如何把记录分别插入两个表的呢?

#4


up

#5


其实,应该是只INSERT了B表,没有INSERT A表。

#6


我觉得应该两个表同时更新呀,但却没有体现出来。是我理解错了吗?

#7


help

#8


???

#1


create view myview(col1,col2)
as
select a.col1,b.col2  from a,b where a.col1=b.col1

---------------
插入的时候
insert into myview(col1,col2) values('001','zhangsan');

#2


create view myview(col1,col2)
as
select a.col1,b.col2  from a,b where a.col1=b.col1

create trigger a_bInsert instead of insert on myview
declare
v_col a.col1%type;
begin
----col1 能唯一标示 a 的一列
select col1 into v_col from a where col1 = :new.col1;
update b set col1=v_col where col2 = :new.col2;
end;

建立完替代触发器后可以插入试图
---------------
插入的时候
insert into myview(col1,col2) values('001','zhangsan');

#3


在这里,你update b set col1=v_col where col2 = :new.col2;
它是如何把记录分别插入两个表的呢?

#4


up

#5


其实,应该是只INSERT了B表,没有INSERT A表。

#6


我觉得应该两个表同时更新呀,但却没有体现出来。是我理解错了吗?

#7


help

#8


???