-- When we enter a transfer, the targetCredit of the associated bill might already be the credId
-- of a transfer for other dues itself. We can update (replace) the transfer for an unfullfilled one.
-- That way, a transfer may issue recursively chained transfers.
CREATE TRIGGER rebalanceIncreasedCredit
    AFTER UPDATE OF value ON Credit
    WHEN NEW.value > OLD.value
BEGIN

    INSERT INTO __INTERNAL_TRIGGER_STACK
        SELECT t.ROWID, t.billId, t.credId,
            min(ca.difference, NEW.value - OLD.value)
        FROM Transfer t
          JOIN CurrentArrears ca ON t.billId = ca.billId
        WHERE OLD.credId = t.credId
    ;

END;