gpt4 book ai didi

oracle - 可以直接在表的 all_triggers 表中定义触发器吗?

转载 作者:行者123 更新时间:2023-12-04 22:58:34 26 4
gpt4 key购买 nike

我正在一个巨大的数据库上执行归档过程,它涉及删除生产事件表并将另一个表重命名为新的生产表。删除生产事件表时,触发器也会被删除。所以我只是使用备份我的表上定义的触发器
select * from all_triggers where table_name=mytablename;
我的问题是,在我将另一个表重命名为新的生产事件表后,我可以直接将这些触发器复制到 all_triggers 表中吗?触发器仍然有效吗?
定义索引和约束也有同样的问题。

最佳答案

不,您不能直接操作数据字典表。不能直接插入数据到all_triggers (同样适用于任何数据字典表)。我想你可能会给予足够的黑客攻击。它只是不起作用,并且会使您的数据库不受支持。

正确的方法是编写触发器的脚本并在以后重新应用它们。如果您想以编程方式执行此操作,可以使用 dbms_metadata包裹。如果您想获取表上每个触发器的 DDL,您可以执行以下操作

select dbms_metadata.get_ddl( 'TRIGGER', t.trigger_name, t.owner )
from all_triggers t
where table_owner = <<owner of table>>
and table_name = <<name of table>>

关于oracle - 可以直接在表的 all_triggers 表中定义触发器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886615/

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