某个用户下的一个表
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结合使用我写了个但是编译通不过
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结合使用我写了个但是编译通不过
我写错了 SDE 改为xxgis
user:xxgis
Password:xxgis
登陆到此用户在创建trigger
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;
/
在
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;