我需要从我们的数据库中记录付款删除。我遇到的问题是,当一笔付款在我们的系统中标记为多张发票时,触发器不返回发票的编号,而是给出空值。
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
的?
1条答案
按热度按时间mwecs4sa1#
答案在另一个线程here中。它带有示例,是最容易修改和使用的解决方案。