使用INSTEAD OF触发器
该触发器只能用在视图上面,可以操作视图的基表
该触发器只能用在视图上面,可以操作视图的基表
解决方案 »
- ORACLE 数据库实例连接错误
- SQL*PLUS中显示列长度格式的问题
- auto_space_advisor_job_proc 消耗资源高
- 数据库利用率监控
- 这句在Oracle中怎么写
- Transact-Sql与PL/SQL 触发器比较的问题
- 创建用户的问题。
- 采用SQL?采用Oracle?
- 请问下面的存储过程错在那里?
- 两个表各自排序后再按权重合并后排序问题?求指点,谢谢
- 哪里有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 分。