我正在使用oracle 11g,架构如下:
TRANSFER(id_transfer, origin_account, destine_account, amount, date, id_replica)
DELETES(id, table, id_replica, date)
其他表,每个表都有一个id_replica作为标识符。
我每个表都有一个触发器,当删除它时复制删除表DELETES中的id_replica。因此,如果我删除转移它首先保存到DELETES(id,transfer,id_replica,sysdate),这是为了记录我删除的内容。
问题是现在我想在不激活此触发器的情况下进行删除,我需要有两种删除行的方法,激活触发器并将删除的内容保存到表DELETES中,并删除该行不激活此触发器。
我想到了一些解决方案:
制作2个不同的程序/功能来删除每个表中的一行(或者只有一个带有触发器,另一个可以正常完成)。
在每次删除之前启用或禁用触发器,这有点复杂,因为它做了很多次
如何创建删除行的过程/函数?还有其他办法吗?