涉及表:
         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,公司不允许个人建触发器,所以除了触发器,还有别的实现方法吗?

解决方案 »

  1.   

    如果为了区分表可以考虑用同义词或者物化视图  对org2就不需要创建实体表了
      

  2.   

    创建视图 或者:http://wenku.baidu.com/view/1308e0563c1ec5da50e27006.html 
      

  3.   

    的确,视图是很好的实现办法。
    另外,oracle有个属性叫:on delete cascade,当主表的某些条被删掉时,引用它的表的记录会被删除。但是,增加和修改就不知道了,所以视图还是不错的。
      

  4.   

    在网上搜了一下,merger好像可以实现级联增、删、改。但他的功能好像是:它只是同时修改两张表SQL,但不是触式的,只能执行一次,同时修改一次。
    但我需要实现的是:类似触发器,当修改org时,触发级联修改org2。就是说当别人不管在什么时候对表org有改动时,org2也跟着改动。而不是说我现在写一个能同时改两表的SQL。
    请高手继续指点。
      

  5.   

    物化视图还不行  那就写个过程   用job做实时同步吧
      

  6.   

    参考http://blog.csdn.net/gan690416372/article/details/5283214
      

  7.   

    --1.先为物化视图建日志空间
    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);