在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
用户A下的T_SRC_WEATHER_TSPG字段有两个表,如图所示,
用户B表下的t_src_weather,如下所示:
要求在T_SRC_WEATHER_TSPG表中在用户A具有插入或更新数据的情况下,该数据为同时同步到用户B下的t_src_weather表,
创建触发器,SQL语句如下:
?创建或替换触发器weather_history_update -weather_history_update是触发器名称 更新或插入后是吗?Yjzhaccess.T_SRC_WEATHER_TSPG??-AFTER指定触发时间,后跟表名,即更新或插入表Yjzhaccess.T_SRC_WEATHER_TSPG时的触发时间 每行吗??-每行 开始吗?插入yjzhhistory.t_src_weather (ID,SSXQMC,SSXQDM,HISTIME和WEATHER)-指定插入的表格和字段 ?VALUES(:new.ID ,: new.MC ,: new.ID ,: new.gxsj,:: new.type); -将新插入的数据引入到表中 ?end;
?在执行.T_SRC_WEATHER_TSPG后插入Yjzhaccess?值(23,”二十三个团队”,66.66、16.66,”雪”,66,sysdate)异常,报告ora-04098:触发器无效并且无法执行通过重新验证编译错误:
如果发现错误是未经许可的,请登录dba用户,并将用户B下的表的插入权限分配给用户A sql,如下所示:在yjzhhistory.t_src_weather上授予插入权限p>
授予权限后,执行测试更新语句,成功,此时触发执行触发事件,两个表对应的数据
示例:在ON REQ_PROC上更新后创建或替换触发器InsertAISyn
FOR EACH ROW
DECLARE
OLDSTATUS VARCHAR2(64);
NEWSTATUS VARCHAR2(64) ;
STUDYUID?VARCHAR2(64);
STUDYID?VARCHAR2(64);
PATIENTID?VARCHAR2(64);
模态?VARCHAR2(64);
StudyDesc VARCH AR2(64);
开始
NEWSTATUS:=:new.STATUS;
OLDSTATUS:=:old.STATUS;
STUDYUID:=:new.STUDY_INS_UID;
/>模态:=:new.MODALITY;
StudyID:=:new.REQ_PROC_ID;
StudyDesc:=:new.PARTOFCHECK;
IF NEWSTATUS =”选中”与OLDSTATUS LT; \ gt; NEWSTATUS,然后
开始
删除hhpacs.synaistaus,其中StudyUID = STUDYUID; 如果是(模态=” CT”),则
BEGIN
插入hhpacs.SynAIStaus(STUDYUID,StudyID,PATIENTID,Modality,StudyDesc,SynStatus)
值(STUDYUID,StudyID,PATIENTID,Modality,StudyDesc,0);
END;
如果结束;
END;
如果结束;
END;