我用oracle10g ,
现在有A表,B表,和A1表。 目的是,取A表和B表的一些字段,实时同步给A1表。
我建一个触发器:
create or replace trigger tr_s
before insert on A
for each row
begin
Insert Into A1 (id)values(:New.id);
End;
/
以上是没问题的。 但是缺少了几个字段,所以我考虑做成视图V,创建一个触发器如下
create or replace trigger tr_GIFTREDEEMHIS_ins
instead of insert on V
for each row
begin
Insert Into A1 (id)values(:New.id);
End;
/
以上这么做,就不可行。
请教大家,是否可以允许用视图,怎么用?谢谢
现在有A表,B表,和A1表。 目的是,取A表和B表的一些字段,实时同步给A1表。
我建一个触发器:
create or replace trigger tr_s
before insert on A
for each row
begin
Insert Into A1 (id)values(:New.id);
End;
/
以上是没问题的。 但是缺少了几个字段,所以我考虑做成视图V,创建一个触发器如下
create or replace trigger tr_GIFTREDEEMHIS_ins
instead of insert on V
for each row
begin
Insert Into A1 (id)values(:New.id);
End;
/
以上这么做,就不可行。
请教大家,是否可以允许用视图,怎么用?谢谢
但需要使用instead of insert on 视图
具体操作基表,没有问题的。
我本意就是通过视图把数据同步到表的。 插入的数据是插入到A表里。A表和B表,建的视图嘛
创建在视图上的触发器就是替代触发器,只能是行级触发器
为什么说是替代触发器?因为我们实际上对视图并不能进行直接的插入操作,但是我们可以通过触发器来把对视图的插入操作替换成对组成视图的各个表的插入操作,这就是为什么叫替代触发器!总上,你的要求是不合理的,所以实现不了。
下面的解决方案,你可以考虑下:
1,对视图直接进行插入操作,把需要插入A表的数据和B表关联的数据直接插入视图,然后通过替代触发器来实现对A表的插入和对A1表的插入。
2,仍然在你的A表中建立触发器,触发的同时把你B表中相关的数据查出来,一块插入到A1表中应该也可以吧?
难道莫非楼主你tr_s 和tr_GIFTREDEEMHIS_ins这2个触发器同时在用。。只用tr_GIFTREDEEMHIS_ins 真不知道还有什么问题啊