涉及表:
org(单位表)
orgid orgcode orgname
编号 编号 单位名称
1 xxzx 信息中心
2 gsjg 公司机关
3 tgs 退管所
4 bdk 保德矿
5 fgk 府谷矿
其中orgid为主键。
现我新建一张表org2,字段与org表相同,orgid为主键。
org表的orgid为org2的外键。
org2数据:insert into org2(select orgid,orgcode,orgname where orgid not in (2,5))
我的问题:
如何设计:当对表org增、删、改时,能同时联动更改表org2,公司不允许个人建触发器,所以除了触发器,还有别的实现方法吗?
org(单位表)
orgid orgcode orgname
编号 编号 单位名称
1 xxzx 信息中心
2 gsjg 公司机关
3 tgs 退管所
4 bdk 保德矿
5 fgk 府谷矿
其中orgid为主键。
现我新建一张表org2,字段与org表相同,orgid为主键。
org表的orgid为org2的外键。
org2数据:insert into org2(select orgid,orgcode,orgname where orgid not in (2,5))
我的问题:
如何设计:当对表org增、删、改时,能同时联动更改表org2,公司不允许个人建触发器,所以除了触发器,还有别的实现方法吗?
另外,oracle有个属性叫:on delete cascade,当主表的某些条被删掉时,引用它的表的记录会被删除。但是,增加和修改就不知道了,所以视图还是不错的。
但我需要实现的是:类似触发器,当修改org时,触发级联修改org2。就是说当别人不管在什么时候对表org有改动时,org2也跟着改动。而不是说我现在写一个能同时改两表的SQL。
请高手继续指点。
create materialized view log on org
tablespace APPS_TS_TX_DATA --org的表空间即可
with rowid;
--2.建立物化视图
DROP materialized view org2;
create materialized view org2
TABLESPACE APPS_TS_TX_DATA --org的表空间即可
build IMMEDIATE --物化视图建立时,就把源表的数据写进去
refresh FORCE --如果可以快速刷新则进行快速刷新,否则完全刷新
ON COMMIT --当发生COMMIT动作时,就刷新视图
as select * from org WHERE orgid not in (2,5);