gpt4 book ai didi

oracle - 修改多个oracle触发器

转载 作者:行者123 更新时间:2023-12-04 05:13:04 25 4
gpt4 key购买 nike

我有一项任务涉及更新许多触发器,这些触发器是完全相同的查询但应用于几个不同的表。有没有办法使用 FOR 或类似语句更新所有这些触发器?实际上我需要做的是修改所有这些触发器的 WHEN 子句。

最佳答案

您可以为此使用 dbms_metadat。

例如:

declare
type arr_tab is table of varchar2(30);
v_arr arr_tab;
v_trig clob;
begin
dbms_metadata.set_transform_param( DBMS_METADATA.SESSION_TRANSFORM,
'SQLTERMINATOR', FALSE );

v_arr := arr_tab('TEST_TRIG', 'TEST2_TRIG'); -- change these triggers.
for idx in 1..v_arr.count
loop
v_trig := dbms_metadata.get_ddl('TRIGGER',v_arr(idx), user);
execute immediate regexp_replace(regexp_replace(v_trig, 'ALTER TRIGGER.*', ''), 'WHEN ([^\)]*\))', 'WHEN (1=1)', 1, 1, 'mi');
end loop;
end;
/
'WHEN ([^\)]*\))', 'WHEN (1=1)'部分替换 WHEN条款(在我的情况下) WHEN (1=1) .

关于oracle - 修改多个oracle触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com