oracle 当组合因子存在时,DELETE的SQL触发器不返回数据

m1m5dgzv  于 2022-12-03  发布在  Oracle
关注(0)|答案(1)|浏览(116)

我需要从我们的数据库中记录付款删除。我遇到的问题是,当一笔付款在我们的系统中标记为多张发票时,触发器不返回发票的编号,而是给出空值。

CREATE OR REPLACE TRIGGER LOG_DELETEDPAYMENTS
BEFORE DELETE ON payments
FOR EACH ROW
BEGIN
IF :old.type IN(2, 3) THEN 
INSERT INTO TABLE_LOG_DELETEDPAYMENTS (table_name, invnr, extinvnr, invdate, transactionid, info, createdby, deleted_by, date_of_change)
values ('payments', :old.invnr, :old.extinvnr, :old.invdate, :old:transactionid, :old.info, :old.createdby, sys_context('userenv','OS_USER'), SYSDATE);
END IF;
END;

合并因子为transactionid。在我们的数据库中,1 transactionid可以包含多个发票和付款。当我删除1 transactionid时,所有具有此值的付款也会被删除。在下面的图像中,您可以看到一个示例。第一行具有invid,但第2行和第3行(它们是与相同的transactionid合并支付的)没有任何值:

我怎样才能改变这一点,并在表中得到所有的invoiceid的?

mwecs4sa

mwecs4sa1#

答案在另一个线程here中。它带有示例,是最容易修改和使用的解决方案。

相关问题