为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:centos7
【CPU】:x86
【问题描述】*:源oracle中存在夸模式表级触发器,迁移到大梦后出现了问题。请问大梦这边是否支持这种夸模式的表级别触发器?
源oracle中触发器:
CREATE OR REPLACE TRIGGER RSMTRIG.TR_BI_FILE_DATA_RECORD
before insert on "RSMDATA"."FILE_DATA_RECORD"
for each row
declare
v_trigger_user varchar2(100);
v_trigger_date date;
cursor c_switch(cp_switch rsm_tr_switch.switch_for%type) is
select status from rsm_tr_switch
where trigger_name = 'TR_BI_FILE_DATA_RECORD'
and switch_for = cp_switch;
v_status rsm_tr_switch.status%type;
v_sqlcode varchar2(6);
v_sqlerrm varchar2(200);
v_error_comment varchar2(300);
v_seq varchar2(20);
v_seq_no varchar2(20);
v_flag varchar2(10);
v_message varchar2(400);
v_seq2 varchar2(20);
v_flag2 varchar2(10);
v_message2 varchar2(400);
begin
v_error_comment:='before get_user';
v_trigger_user := pub_sys_package.get_user();
v_trigger_date := sysdate;
v_error_comment:='before pk_serial';
if :new.DATA_RECORD_ID is null then
rsmcde.rsm_seq_package.get_seq('FILE_DATA_RECORD', 'DATA_RECORD_ID', 'RSMDATA',v_seq, v_flag, v_message );
if v_flag <> '1' then
raise_application_error(-20510,'FILE_DATA_RECORD.DATA_RECORD_ID对应的seq值出现异常:'||v_message);
end if;
:new.DATA_RECORD_ID := v_seq;
end if;
rsmcde.rsm_seq_package.get_seq('FILE_DATA_RECORD', 'PK_SERIAL', 'RSMDATA',v_seq, v_flag, v_message );
if v_flag <> '1' then
raise_application_error(-20510,'FILE_DATA_RECORD.PK_SERIAL对应的seq值出现异常:'||v_message);
end if;
:new.pk_serial := v_seq;
v_error_comment:='before RSM_SYNCH';
open c_switch('RSM_SYNCH'); --获取子功能控制信息
fetch c_switch into v_status;
if c_switch%FOUND and v_status = '1' then
:new.created_user := v_trigger_user;
:new.created_date := v_trigger_date;
:new.updated_user := v_trigger_user;
:new.updated_date := v_trigger_date;
end if;
close c_switch;
--出错处理
exception
when others then
v_sqlcode :=sqlcode;
v_sqlerrm :=substr(sqlerrm,1,200);
insert into rsm_tr_error_log
(error_no , --系统错误代码
error_message , --系统错误信息
trigger_name , --出错的trigger
trigger_user , --出错的用户
trigger_date , --出错的时间
error_comment --出错详细信息
)
values
(v_sqlcode,
v_sqlerrm,
'TR_BI_FILE_DATA_RECORD',
v_trigger_user,
v_trigger_date,
v_error_comment
);
end;
你想要在RSMTRIG模式下创建一个触发器,如果在RSMDATA模式的表上插入数据,就触发触发器将日志写入RSMTRIG模式的表里对吧