我可以暂时禁用oracle存储过程中的触发器吗?
发布时间:2020-12-12 16:23:41 所属栏目:百科 来源:网络整理
导读:我可以暂时禁用oracle存储过程中的触发器吗? 示例(伪代码): MyProcedure{ disable MyTrigger; //doStuff enable MyTrigger;}; thx提前. 朱塞佩 您可以使用EXECUTE IMMEDIATE语法通过动态SQL发出DDL,例如“ALTER TRIGGER”语句. 对此的描述如下: http://do
我可以暂时禁用oracle存储过程中的触发器吗?
示例(伪代码): MyProcedure{ disable MyTrigger; //doStuff enable MyTrigger; }; thx提前. 对此的描述如下: PROCEDURE myProcedure IS BEGIN EXECUTE IMMEDIATE 'ALTER TRIGGER triggername DISABLE'; -- Do work EXECUTE IMMEDIATE 'ALTER TRIGGER triggername ENABLE'; EXCEPTION WHEN OTHERS THEN -- Handle Exceptions END myProcedure; 如果您愿意,也可以使用VARCHAR变量构建动态SQL: PROCEDURE myProcedure IS v_triggername VARCHAR2(30) := 'triggername'; BEGIN EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' DISABLE'; -- Do work EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' ENABLE'; EXCEPTION WHEN OTHERS THEN -- Handle Exceptions END myProcedure; 如果你这样做,那么你也应该查看包DBMS_ASSERT来包装triggername并帮助强化你的代码以防止SQL注入攻击. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |