某个用户下的一个表
UserName:sde
Password:sde

        TABLEName:Network_Point
更新的字段:GLBZ(integer)
关联字段:GJZ另外一个用户下的(不同表空间)
属性数据库(oracle 9i):
Server:orcl
UserName:xxgis
Password:xxgisTableName:YXBHB
关联字段:GJZ要求:
当YXBHB插入的时候,根据插入的行的GJZ来查找图层上的对应行,并且把Network_Point上的对应行的GLBZ字段的值改为1;
当YXBHB更新的时候,操作同上;
当YXBHB删除的时候,根据删除的行的GJZ来查找图层上的对应行,并且把Network_Point的对应行的GLBZ字段的值改为0;我写的
create database link guyaohu connect to sde identified by sde using'orcl';create or replace trigger tri_shnw
before insert or update or delete on YXBHB for each row
declare
begin
if updating then
update Network_Point@guyaohu set GLBZ=1 where [email protected];
elsif inserting then
update Network_Point@guyaohu set GLBZ=1 where [email protected];
elsif deleting then
update Network_Point@guyaohu set GLBZ=0 where [email protected];
end if;
end;
/
估计要将触发器和database link结合使用我写了个但是编译通不过

解决方案 »

  1.   

    create database link guyaohu connect to sde identified by sde using'orcl'; 
     我写错了 SDE  改为xxgis 
      

  2.   

    你写的应该用
    user:xxgis
    Password:xxgis
    登陆到此用户在创建trigger
      

  3.   

    create or replace trigger tri_shnw 
    before insert or update on YXBHB for each row 
    begin 
      update guyaohu.Network_Point 
         set GLBZ = 1 
       where gjz = :NEW.gjz; 
    end tri_shnw; 
    /create or replace trigger tri_shnw_delete 
    before delete on YXBHB for each row 
    begin 
      update guyaohu.Network_Point 
         set GLBZ = 0 
       where gjz = :OLD.gjz; 
    end tri_shnw_delete; 
    /
      

  4.   

    解决了

    update Network_Point@guyaohu set GLBZ=1 where [email protected]
    中不能用Network_Point@guyaohu形式直接用Network_Point这个表名就行了 因为前面已经Network_Point@guyaohu 定位了
    或者为Network_Point@guyaohu建立一个同义词也是可以通过的 下面这个形式就可以了
    update Network_Point@GUYAOHU set idbm=1 where Network_Point.gjz=:new.gjz;