Would using temporary tables be a feasible solution? That seems to be functionally what I want, but maybe it's hard to write triggers that write to temp tables.
Maybe a persistent log table is OK, and each transaction is responsible for deleting its own rows from it? Sounds like a lot of churn though...