赞
踩
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to system;//授予建立dblink的权限使用sys帐号授予
create database link dblink名称(随意) connect to system identified by manager using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 实例数据库所在的ip地址)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = 实例名称)))';//建立dblink
create or replace synonym gy_fileserver_file_mirror_jfxt //同义词
for gy_fileserver_file_mirror@dblink名称(已建好的)
create or replace trigger sync_file_mirror_jf //触发器,增删改查。触发器对分号比较敏感,一般语句后面都要加‘;’
after insert or delete or update
on gy_fileserver_file_mirror
for each row
begin
if inserting then
delete gy_fileserver_file_mirror_jfxt where mainid=:new.mainid; //先删除在insert增加容错率
insert into gy_fileserver_file_mirror_jfxt (mainid,fileid,dist_format,serverid,v,v_v,createtime,modifytime,creator,modifier,rsextend,mirrortype,cost,pagecount,length,jpgtimes,tiletimes,jpglength) values(:new.mainid,:new.fileid,:new.dist_format,:new.serverid,:new.v,:new.v_v,:new.createtime,:new.modifytime,:new.creator,:new.modifier,:new.rsextend,:new.mirrortype,:new.cost,:new.pagecount,:new.length,:new.jpgtimes,:new.tiletimes,:new.jpglength);
elsif deleting then
delete gy_fileserver_file_mirror_jfxt where mainid=:old.mainid;
elsif updating then
delete gy_fileserver_file_mirror_jfxt where mainid=:old.mainid; //其实更新和插入可以使用一样的
insert into gy_fileserver_file_mirror_jfxt (mainid,fileid,dist_format,serverid,v,v_v,createtime,modifytime,creator,modifier,rsextend,mirrortype,cost,pagecount,length,jpgtimes,tiletimes,jpglength) values(:new.mainid,:new.fileid,:new.dist_format,:new.serverid,:new.v,:new.v_v,:new.createtime,:new.modifytime,:new.creator,:new.modifier,:new.rsextend,:new.mirrortype,:new.cost,:new.pagecount,:new.length,:new.jpgtimes,:new.tiletimes,:new.jpglength);
end if;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('触发器出现异常');//必须捕捉异常,否错网络中断或者主键冲突会导致原表的操作发生数据回滚。
//当然这个也是和业务是相关的。比如在某些条件下可以做些检查可以使用before。
end;
:new 新建和更新可以用,:old 删除和更新可以用
raise_application_error 抛出异常
一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。