我们有一个应用程序,其中数据库包含大量的业务逻辑触发器,在更新后会在多个其他表上触发触发器。我想重构这个混乱的代码,并希望从触发器中提取过程开始,但是找不到任何可靠的工具来实现这一点。在SQL Developer和Toad中使用“提取过程”未能正确处理:new和:old触发器变量。
如果您遇到了类似的触发器问题,您是否找到了解决方法?
编辑:理想情况下,只发送作为输入/输出参数引用的列,如:
要从触发器中提取的原始代码示例:
如果您遇到了类似的触发器问题,您是否找到了解决方法?
编辑:理想情况下,只发送作为输入/输出参数引用的列,如:
要从触发器中提取的原始代码示例:
.....
if :new.col1 = some_var then
:new.col1 := :old.col1
end if
.....
would become :
procedure proc(in old_col1 varchar2, in out new_col1 varchar2, some_var varchar2) is
begin
if new_col1 = some_var then
new_col1 := old_col1
end if;
end;
......
proc(:old.col1,:new.col1, some_var);