使用INSTEAD OF触发器
该触发器只能用在视图上面,可以操作视图的基表
该触发器只能用在视图上面,可以操作视图的基表
解决方案 »
- RMAN窗口输出和日志记录
- oracle存储过程问题!
- 有关oracle的order by语句中使用decode的问题
- 关于一个类型转换的问题 整形--布尔型
- 请问下面的查询执行的顺序是什么样的,用什么方法来验证???????
- 大家帮我看看,奇怪的sql问题,在线等
- oracle的列的自动编号
- 简单问题!!!!!!!!!!
- [问题]如何用jsp来连oracle?
- 请问哪位大侠能在linux9或7.2下安装oracle8.17? 100分相送
- 哪里有PLSQL Developer和JCreator Pro下载,没有时间限制的?
- 问题解决有100分给,各位高手怎么才能在做应用程序的安装程序时“把ORACLE客户端”打进安装程序中,使其客户在安装时无需再安装ORACLE客
重申一下,我的问题是 以上方案取其一,只要目的达到就行。
建立视图c,再建立视图c INSTEAD OF触发器
a与b表不用建立触发器了,因为改变了a,b表,视图c也同时查询最新结果方案二:
建立快照c,快照c改变同时返应到a,b表,a,b表的改变同时也会影响快照c
它们之间不用建立触发器
如何建立快照,能不能说得详细一些。不好意思,我从来没用过快照。
CREATE MATERIALIZED VIEW c
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
ENABLE QUERY REWRITE
as
SELECT COL1,COL2,COL3,COL4,COL5
FROM A
UNION
SELECT COL1,COL2,COL3,COL4
FROM B;
那只能用方案一.
按你说的建立快照时,为什么系统提示:
ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性。
建立视图c的触发器如下:
create or replace trigger updt_A_B instead of
update on C
declare
par1 number(10);
par2 number(10);
begin
select col2,col3 into par1,par2 from a where col1=:new.col1
if (:new.col2=par1) and (:new.col3=par2) then
update a set col4=:new.col4,col5=:new.col5 where col1=:new.col1 and
col2=:new.col2 and col3=:new.col3;
else
update b set col4=:new.col4 where col1=:new.col1 and col2=:new.col2
and col3=:new.col3;
end if;
end;
结帖.不知如何给分,斑竹能够帮忙吧?请给beckham 80 分。