如何在oracle中设置不同的删除方式,无论是否激活触发器

如何在oracle中设置不同的删除方式,无论是否激活触发器,oracle,function,oracle11g,triggers,procedure,Oracle,Function,Oracle11g,Triggers,Procedure,我使用的是oracle 11g,模式如下: TRANSFER(id_transfer, origin_account, destine_account, amount, date, id_replica) DELETES(id, table, id_replica, date) 其他表,每个表都有一个id_副本作为标识符 我还为每个表设置了一个触发器,当delete复制表DELETES中删除的id_副本时。因此,如果我删除一个transfer,它首先保存到DELETES(id,transfe

我使用的是oracle 11g,模式如下:

TRANSFER(id_transfer, origin_account, destine_account, amount, date, id_replica)

DELETES(id, table, id_replica, date)
其他表,每个表都有一个id_副本作为标识符

我还为每个表设置了一个触发器,当delete复制表DELETES中删除的id_副本时。因此,如果我删除一个transfer,它首先保存到DELETES(id,transfer,id\u replica,sysdate)中,这是为了在我删除的内容上有一个记录

问题是,现在我想在不激活此触发器的情况下进行删除,我需要有两种方法来删除行,激活触发器并将删除的内容保存到表DELETES中,以及在不激活此触发器的情况下删除行。

我想到了一些解决方案:

  • 制作两个不同的程序/函数来删除每个表中的一行(或者一个带有触发器,另一个可以正常执行)

  • 在每次删除之前启用或禁用触发器,这有点复杂,因为它会执行很多次


  • 如何创建删除行的过程/函数?还有其他方法吗?

    :如果您不想将删除的记录记录在表中
    deletes
    ,那么停用触发器然后执行删除操作的唯一方法是,如果您不想一次又一次地执行此操作,那么您可以创建一个过程,比如deactivateAndperformDelete,它取表的主键,第一条语句是去激活触发器,执行删除,删除后再激活触发器,这样可以实现手动激活和去激活触发器,我怎么做这个过程?我从来没有做过一件事:现在是开始阅读和实现感谢的时候了,我解决了这个问题,制作了一个删除和插入删除表的过程